我正在尝试从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
函数的数量应根据要匹配的值的数量而变化。
如何创建一个查询,使我能够匹配未知数量的不同值? -也许是循环?
先谢谢了。我已经搜索了SO和网络,但并没有获得太大的成功!
const orders = await findr.find({
$or: [{
values: {
$elemMatch: {
id: "1234",
}
}
},
{
values: {
$elemMatch: {
id: "6743",
}
}
}
]
}).toArray()
答案 0 :(得分:1)
您可以使用 beforeEach(async(() => {
TestBed.configureTestingModule({
imports:[BsDatepickerModule, FormsModule],
declarations: [ MyTestComponent],
schemas:[NO_ERRORS_SCHEMA],
})
.compileComponents();
}));
编写查询:$in
{"values.id": { $in: ["123", "456"] }}
是不必要的,因为您仅指定一个条件。