【问题标题】:Mongodb distinct count for multi fields With exampleMongodb 多字段的不同计数与示例
【发布时间】:2015-06-22 00:45:14
【问题描述】:

我正在使用 pymongo MongoClient 对多个字段进行不同的计数。

我在这里找到了一个类似的例子:Link

但这对我不起作用。

例如,通过给定:

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.

那么,执行此操作的正确代码是什么?感谢您的所有帮助。

【问题讨论】:

    标签: python mongodb pymongo


    【解决方案1】:

    终于找到了解决办法:Group by Null

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

    【讨论】:

      猜你喜欢
      • 2014-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-01
      • 2014-11-08
      • 2014-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多