gpt4 book ai didi

javascript - Mongodb $in 针对数组对象字段而不是数组对象

转载 作者:IT老高 更新时间:2023-10-28 13:13:44 26 4
gpt4 key购买 nike

arr=[{field1:<value1>,field2:<value2}.....]

我想对 arrfield1 使用 $in 运算符。我知道我可以创建一个虚拟数组并将 field1 值推送到虚拟数组中。但是有没有办法对数组的特定字段使用 $in 运算符?

arr 数组与集合没有任何关系。

我想查询特定字段上的所有文档,其值在 arrfield1 中 - field1 应该在运算符 的右侧$in

例子:

arr=[{name:'foo',location:'NY'},{name:'bar',location:'LA'},{name:'foobar',location:'NZ'}]

db.collection.find({fieldx:<Here I want some method to obtain all documents whose fieldx values are in the location field of arr>})

输出应包含 fieldx 值存在于 arrlocation 字段中的文档。

查询的输出应该是

[{... 
fieldx:'NY',
...
},
{...
fieldx:'LA',
...
},
{...
fieldx:'NZ',
...
}]

fieldx 是我要查询的集合中的字段。它不是我提供的数组的一个字段 (arr)。我想将它与数组的字段(location)匹配 - arr 我正在提供查询。

最佳答案

您需要从输入数组中提取“位置”字段并将它们提供给 $in:

var locs = arr.map(function(x) { return x.location } );
db.collection.find({ "fieldx": { "$in": locs } })

作为引用,我将为您重写您的问题:

我有一个包含这样的文档的集合:

{ "fieldx": "NY" }
{ "fieldx": "LA" }
{ "fieldx": "SF" }

我有一个输入数组,定义如下:

var arr = [
{ "name": "foo", "location": "NY"},
{ "name": "bar", "location": "LA"},
{ "name": "foobar", "location": "NZ"}
];

现在我想编写一个查询来查找与我输入的数组中的“位置”字段匹配的所有文档。

我该怎么做?

我试过了:

db.collection.find({ "fieldx": { "$in": arr } })

但这不匹配。

关于javascript - Mongodb $in 针对数组对象字段而不是数组对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24503323/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com