我正在尝试从MongoDB中提取一些数据。
我的数据库看起来像这样;
{
"name": "A",
"address": "London Road",
"values": [{"id": 1234, "name":"ABCD"},{"id": 6784, "name":"test"}]
}
{
"name": "B",
"address": "South Road",
"values": [{"id": 4327, "name":"guest"},{"id": 6743, "name":"demo"}]
}
{
"name": "C",
"address": "North Road",
"values": [{"id": 1234, "name":"ABCD"}]
}我正在尝试根据values id密钥提取数据。
因此,如果我将1234与values id匹配,我将返回元素A和C-我能够做到这一点。
我想要匹配的值可能会改变,它们可能是1234或6743 -返回元素A、B和C。
我已经创建了下面的$or来处理这个问题,但是要匹配的值的数量会有所不同,所以$or函数的数量应该根据要匹配的值的数量而变化。
我如何创建一个查询,允许我匹配未知数量的不同值?-可能是一个循环?
提前谢谢。我已经搜索过了,网络也没有太多的成功!
const orders = await findr.find({
$or: [{
values: {
$elemMatch: {
id: "1234",
}
}
},
{
values: {
$elemMatch: {
id: "6743",
}
}
}
]
}).toArray()发布于 2019-07-03 06:15:24
您可以使用$in编写查询:{"values.id": { $in: ["123", "456"] }}
$elemMatch不是必需的,因为您只指定了一个条件。
https://stackoverflow.com/questions/56860300
复制相似问题