2015-08-28 64 views

回答

3

可以使用聚合查詢這樣的:

db.collection.aggregate([ 
    {$unwind: "$like"}, 
    {$project: {"tlid": "$like.tlid", "count": {$size: "$like.tlikers"}}}, 
    {$group: {_id: "$_id", "likes": {$push: {tlid: "$tlid", count : "$count"}}}} 
]) 

這將產生類似的結果:

[ 
    { 
     "_id" : ObjectId("55d8a835363ffb2157589145"), 
     "likes" : [ 
      { 
       "tlid" : 111, 
       "count" : 2 
      }, 
      { 
       "tlid" : 112, 
       "count" : 2 
      }, 
      { 
       "tlid" : 113, 
       "count" : 3 
      } 
     ] 
    } 
] 
0

下面寫的Python腳本會得到你想要的輸出:

(假設集合名稱是:「樣品」)

data = sample.find() 
for doc in data: 
    NumberOfEntries = len(doc['like']) 
    for i in range(0,NumberOfEntries): 
     print "tlid : ",doc['like'][i]['tlid'], "Count of tlikers:",len(doc['like'][i]['tlikers']) 

而不是在控制檯上進行打印,還可以將這些值存儲在字典中繼續使用。