如何计算位于多个数组中多个的不同对象

Kur*_*gle 2 mongodb nosql aggregation-framework

嗨,我有以下模型:

{
    "_id" : ObjectId("5d65a9c2f62b0d437bedc87b"),
    "name" : "dsadasdsadsadsa",
    "companyBases" : [
        {
            "vehicles" : [ 
                {
                    "_id": "unique1"
                },
                {
                    "_id":"unique1"
                },
                {
                    "_id":"unique2"
                }
            ],
            "_id" : ObjectId("5d65aef598b4734a8d3994b1"),
            "name" : "Tech Parking 22",
            "__v" : 0
        },
        {
            "vehicles" : [ 
                {
                    "_id": "unique1"
                },
                {
                    "_id":"unique2"
                }
            ],
            "_id" : ObjectId("5d65aef598b4734a8d3994b3"),
            "name" : "Tech Parking 23",
            "__v" : 0
        }
    ],
    "__v" : 0
}
Run Code Online (Sandbox Code Playgroud)

我想计算“ companyBases”数组中“ vehicles”数组中的不同对象(“ vehicles”中的“ _id”是不同值)。

在上面的示例中,计数模式应为:

“ unique1”-3“ unique2”-2

因此,它为整个数组“ companyBases”在“车辆”数组中提供了2个唯一的对象。

因此输出应为:

{
    "count": 2
}
Run Code Online (Sandbox Code Playgroud)

Him*_*rma 5

以下查询可以解决问题:

db.collection.distinct("companyBases.vehicles._id").length
Run Code Online (Sandbox Code Playgroud)