Javascript 哪个查询选择器可以找到与另一个数组中的任何项匹配的任何数组项?
是否有一个mongo查询选择器允许我检索数组字段中至少一个项与另一个数组中至少一个项匹配的每个文档 假设我有一个mongo文档,在Javascript 哪个查询选择器可以找到与另一个数组中的任何项匹配的任何数组项?,javascript,mongodb,Javascript,Mongodb,是否有一个mongo查询选择器允许我检索数组字段中至少一个项与另一个数组中至少一个项匹配的每个文档 假设我有一个mongo文档,在reference字段中有一个字符串数组 reference: [ "foo", "bar", "or", "not" ] 我想选择在引用数组字段中可以找到与javascript变量中另一个数组中的任何项匹配的项的所有文档(我们称之为target) 在本例中,它将匹配,因为两个数组中都有not 我知道如果我在mongo数组中只查找一个
reference
字段中有一个字符串数组
reference: [
"foo",
"bar",
"or",
"not"
]
我想选择在引用数组字段中可以找到与javascript变量中另一个数组中的任何项匹配的项的所有文档(我们称之为target
)
在本例中,它将匹配,因为两个数组中都有not
我知道如果我在mongo数组中只查找一个元素,那么我可以使用$in
来完成。但是,我希望避免在我的目标
数组上迭代,以查找它在参考
数组中包含的每个项目。您可以与$in
组合使用,以获得您想要的结果:
find({reference: { $elemMatch: { $in : target } } });
您可以通过以下方式完成:
您的数据的结果将是:
{ "_id" : ObjectId("568a82f4f5c54a18bcf843c4"), "reference" : [ "not" ] }
db.test.aggregate([
{$unwind: "$reference"},
{$match: {reference: {$in: target}}},
{$group: {_id: '$_id', reference: {$push: '$reference'}}}
])
{ "_id" : ObjectId("568a82f4f5c54a18bcf843c4"), "reference" : [ "not" ] }