使用 MongoDB Shell 在集合中过滤 MongoDB 个集合

Filtering MongoDB collections within collection using MongoDB Shell

抱歉这个问题。我刚开始使用 MongoDB 和 MongoDB Shell.

我有一个名为 Dealers 的数据库,看起来有点像这样(非常简单):

        [
    {
        "Id": 1,
        "Vehicles": [
        {
            "Manufacturer": "Ford"
        },
        {
            "Manufacturer": "MG"
        },
        {
            "Manufacturer": "Citroen"
        }
        ]
    },
    {
        "Id": 2,
        "Vehicles": [
        {
            "Manufacturer": "Ford"
        },
        {
            "Manufacturer": "Nissan"
        },
        {
            "Manufacturer": "Ford"
        }
        ]
    }
    ]

我想了解您如何在集合 EG 中过滤集合。假设我想 select 来自 Id 2 的所有福特。

我得到了:

const dealer = database.collection('Dealers');
const result = await dealer.find({Id: 2})

我试过了:

const result = await dealers.find({
    Id: 2,
    Vehicles: [
        {
            Manufacturer: "Ford"
        }
    ]
})

但我知道这行不通,因为它没有遍历 Vehicles 集合。这是您要使用聚合的那种实例吗?就像我说的,我对这种环境很陌生,非常感谢任何指点。

刚刚试过了。您可以使用 聚合函数 来实际匹配集合中数组内的项目。就像下面的查询方式将 select 所有 id 等于 1 且 Manufacturer 等于 Ford

的文档
db.MyCollection.aggregate([{$match:{Id:1}},{$unwind:"$Vehicles"}, {$match: {"Vehicles.Manufacturer":"Ford"}}]);

就这样回来了。我使用了我自己的 ID,即等于一个你可以更改它。