有一个数组,例如:
var arr = [“ 1”,“ 1.1”,“ 1.3”,“ 2”,“ 2.1”,“ 2.2”,“ 2.3”]
和一个集合A,就像这样
[{_id:“ 1”,子代:[“ 1.1”,“ 1.4”]},{_id:“ 2”,子代:[“ 2.1”,“ 2.2”]},{_id:“ 3”,儿童:[“ 3.1”,“ 3.2”]}]
by
find({....})我想得到结果
[{_id:“ 1”,孩子:[“ 1.1”]},{_id:“ 2”,子代:[“ 2.1”,“ 2.2”]},]
结果子数组是arr
和集合A
的children
的交集>
如何设置查询运算符?
有一个数组,例如:var arr = [“ 1”,“ 1.1”,“ 1.3”,“ 2”,“ 2.1”,“ 2.2”,“ 2.3”]和一个Collection A,就像这样[{_id:“ 1”,孩子:[“ 1.1”,“ 1.4”]},{_ id:“ 2”,孩子:[“ 2.1”,“ 2.2”]},{_ id:...
您无法通过简单的查询(查找)获得所需的结果,但是可以使用聚合框架来实现。方法如下:
var arr = ["1","1.1","1.3","2","2.1","2.2","2.3"]
db.A.aggregate([ { "$unwind" : "$children" },
{ "$match" : { "children" : { "$in" : arr } } },
{ "$group" : { "_id" : "$_id", "children" : { "$push" : "$children" } } }
]
);
这也不是您要查找的确切答案,但是您可以使用$in运算符非常接近:
您可以使用mongodb $ all运算符获取过滤后的数据https://docs.mongodb.com/manual/reference/operator/query/all/