2015-06-21 57 views
0

我使用的是pymongo MongoClient來執行多個字段的不同計數。Mongodb不同計數的多字段使用示例

我發現了一個類似的例子在這裏: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. 

那麼,什麼是正確的代碼來做到這一點?感謝您的幫助。

回答

0

最後,我找到了解決方法:Group by Null

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