簡體   English   中英

Mongodb多字段的非重復計數示例

[英]Mongodb distinct count for multi fields With example

我正在使用pymongo MongoClient做多個字段不同的計數。

我在這里找到了類似的示例: 鏈接

但這對我不起作用。

例如,通過給出:

data = [{"name": random.choice(all_names), 
         "value": random.randint(1, 1000)} for i in range(1000)]
collection.insert(data)

我想計算多少個名稱,值的組合。 因此,我遵循了上面的鏈接,並將其僅用於測試(我知道此解決方案不是我想要的,我只是遵循鏈接的模式,並試圖了解其工作原理,至少這段代碼可以使我返回東西):

collection.aggregate([
    {
        "$group": {
            "_id": {
                "name": "$name",
                "value": "$value",
                }
            }
    }, 
    {
        "$group": {
            "_id": {
                "name": "$_id.name",
                },
            "count": {"$sum": 1},
            },
    }
    ])

但是控制台給了我這個:

on namespace test.$cmd failed: exception: A pipeline stage 
specification object must contain exactly one field.

那么,執行此操作的正確代碼是什么? 感謝您的所有幫助。

最終我找到了解決方案: 按空分組

res = col.aggregate([
        {
            "$group": {
                "_id": {
                    "name": "$name",
                    "value": "$value",
                    },
                }
        }, 
        {
            "$group": {"_id": None, "count": {"$sum": 1}}
        },
        ])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM