Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 哪个查询选择器可以找到与另一个数组中的任何项匹配的任何数组项?_Javascript_Mongodb - Fatal编程技术网

Javascript 哪个查询选择器可以找到与另一个数组中的任何项匹配的任何数组项?

Javascript 哪个查询选择器可以找到与另一个数组中的任何项匹配的任何数组项?,javascript,mongodb,Javascript,Mongodb,是否有一个mongo查询选择器允许我检索数组字段中至少一个项与另一个数组中至少一个项匹配的每个文档 假设我有一个mongo文档,在reference字段中有一个字符串数组 reference: [ "foo", "bar", "or", "not" ] 我想选择在引用数组字段中可以找到与javascript变量中另一个数组中的任何项匹配的项的所有文档(我们称之为target) 在本例中,它将匹配,因为两个数组中都有not 我知道如果我在mongo数组中只查找一个

是否有一个mongo查询选择器允许我检索数组字段中至少一个项与另一个数组中至少一个项匹配的每个文档

假设我有一个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" ] }