2017-07-04 79 views
0

我需要計數的值是一個值的數組,因此而不是$ myField是項目的關鍵,它是我需要計算的數組元素,因此玉米,小麥,大麥的數量在所有文件中。Python PyMongo計數發生數組項目

"myField": [ 
    "corn", 
    "wheat" 
], 

這是一個單個項目的代碼:

for result in c.aggregate([{ 
    "$group": { 
     "_id": "$myField", 
     "count": {"$sum": 1} 
    } 
}]): 
    print("%s: %d" % (result["_id"], result["count"])) 

回答

0

現在它的時間爲$unwind,其將值的陣列成一系列文件,各自具有單個值,其中所述陣列有一直:

c = MongoClient().test.collection 
c.delete_many({}) 
c.insert_many([ 
    {"myField": ["corn", "wheat"]}, 
    {"myField": ["corn", "barley"]}, 
    {"myField": ["hops"]}, 
]) 

for result in c.aggregate([{ 
    "$unwind": "$myField" 
}, { 
    "$group": { 
     "_id": "$myField", 
     "count": {"$sum": 1} 
    } 
}]): 
    print("%s: %d" % (result["_id"], result["count"])) 

輸出:

barley: 1 
wheat: 1 
hops: 1 
corn: 2 
+0

真是太神奇了!不能感謝你足夠:-)我正在嘗試一切,永遠不會得到那.. –

+0

對於Python和MongoDB技能嘗試MongoDB大學課程:https://university.mongodb.com/courses/M101P/about –