MongoDb匹配未知数量的不同值

时间:2019-07-02 21:34:21

标签: node.js mongodb

我正在尝试从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键提取数据。

因此,如果我将1234values id匹配,我将返回元素A和C-我能够做到这一点。

我要匹配的值可能会更改,它们可能是12346743-返回元素A,B和C。

我创建了下面的$or来处理此问题,但是要匹配的值的数量有所不同,因此$or函数的数量应根据要匹配的值的数量而变化。

如何创建一个查询,使我能够匹配未知数量的不同值? -也许是循环?

先谢谢了。我已经搜索了SO和网络,但并没有获得太大的成功!

const orders = await findr.find({
    $or: [{
            values: {
                $elemMatch: {
                    id: "1234",

                }
            }
        },
        {
            values: {
                $elemMatch: {
                    id: "6743",

                }
            }
        }
    ]
}).toArray()

1 个答案:

答案 0 :(得分:1)

您可以使用 beforeEach(async(() => { TestBed.configureTestingModule({ imports:[BsDatepickerModule, FormsModule], declarations: [ MyTestComponent], schemas:[NO_ERRORS_SCHEMA], }) .compileComponents(); })); 编写查询:$in

{"values.id": { $in: ["123", "456"] }}是不必要的,因为您仅指定一个条件。