2017-07-04 10 views
0

私が数える必要がある値は配列の値ですので、$ myFieldはアイテムのキーではなく、トウモロコシ、コムギ、オオムギの数すべての文書でPython PyMongo Count出現数Array

"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 Universityコースを試してみてください:https://university.mongodb.com/courses/M101P/about –