如何将Mongo集合中的2个字段与数组中的一个字段匹配

时间:2020-06-16 07:12:00

标签: node.js mongodb mongoose mongodb-query aggregation-framework

我有Items个对象集合,说:

[{"Item" : "Apple",
  "Company" : "American Foods",
  "Items" : [{"name" : "Banana", "name" : "Orange", "name" : "Apple", "name" : "Avocado"}]},
 {"Item" : "Mango",
  "Company" : "American Foods",
  "Items" : [{"name" : "Banana", "name" : "Orange", "name" : "Apple", "name" : "Avocado"}]},
 {"Item" : "Banana",
  "Company" : "Indian Foods",
  "Items" : [{"name" : "Banana", "name" : "Orange", "name" : "Apple", "name" : "Avocado"}]}
]

我想编写一个mongo聚合查询,该查询需要输入以返回与任何Item = Items[i].nameCompany = input匹配的所有文档。

假设如果我使用input = American Foods搜索,那么查询将返回集合中的1个文档(因为Item中没有芒果,而香蕉公司是Indian Foods):

{"Item" : "Apple",
  "Company" : "American Foods",
  "Items" : [{"name" : "Banana", "name" : "Orange", "name" : "Apple", "name" : "Avocado"}]}

2 个答案:

答案 0 :(得分:1)

Nodejs +猫鼬

您可以尝试这种方式吗?

gradle

答案 1 :(得分:1)

您需要使用"No"运算符:

<iframe width="100%" height="100%" frameborder="0" allowtransparency="true" src="https://www.surveymonkey.com/r/XXXXX?embedded=1"></iframe>

MongoPlayground

注意:您的$expr数组的JSON语法错误,应该包含单独的项