我想选择分支 ID,分支位置,其中总项目的总和在 mongodb 中大于 11


entire_collection[{ 
    "_id" : ObjectId("571ca6076e589915f893ee8c"),    
    "cbill_details" : [
        {
            "c_branch_id" : "b25", 
            "c_branch_location" : "Kolkata", 
            "c_total_item" : NumberInt(5), 
        }, 
        {
            "c_branch_id" : "b27", 
            "c_branch_location" : "Kolkata", 
            "c_total_item" : NumberInt(7), 
        }, 
    ]
}
{ 
    "_id" : ObjectId("571ca6076e589915f893ee8f"),    
    "cbill_details" : [
        {
            "c_branch_id" : "b25", 
            "c_branch_location" : "Kolkata", 
            "c_item" : NumberInt(9), 
        }, 
        {
            "c_branch_id" : "b27", 
            "c_branch_location" : "Kolkata", 
            "c_item" : NumberInt(3), 
        }, 
    ]
}]

按"c_branch_id"和"c_branch_location"分组,其中"c_item">11 的总和在 mongodb 中

这里 B25 在第 1 个文档中包含 item= 5,在第二个文档中,item =9.so B25 明智的总项目为 (5+9)=14,如果是 B27 总项目为 10。 然后执行查询后,输出将是 B25 及其相应的位置。

首先,您需要聚合查询来匹配问题的数据

你的查询是这样的

db.entire_collection.aggregate(
{$unwind : "$cbill_details"},
{$group : {"_id" : {"c_branch_id" : "$cbill_details.c_branch_id", 
                    "c_branch_location" : "$cbill_details.c_branch_location"},
                    "total_item" : {"$sum" : "$cbill_details.c_total_item" }}},
{$match : {"total_item" : {$gt : 11}}}
)

而且您的文档有点不同,因为您的一个字段是"c_total_item"的,而另一个字段是"c_item"

MongoDB聚合文档链接在这里:https://docs.mongodb.org/manual/aggregation/

最新更新