2014-03-05 81 views
0

下面是我收集的结构......如何在mongoDB上进行此查询?

{ 
     "_id": ObjectId("5316f53228551c0af600019b"), 
     "age_range": { 
     "min": NumberInt(21) 
     }, 
"likes": { 
    "data": { 
     "0": { 
     "category": "Tv show", 
     "name": "Those Who Kill on A&E", 
     "created_time": "2014-03-03T15:08:02+0000", 
     "id": "629689387051864" 
     }, 
     "1": { 
     "category": "Journalist", 
     "name": "Robin Roberts", 
     "created_time": "2014-02-24T18:02:43+0000", 
     "id": "780950061932847" 
     } 
}, 
{ 
"_id": ObjectId("5316f53228551c0af600019b"), 
` 

我需要获取用户总数喜欢为每个类别。 例如

Category Name: Journalist 
Total users: 10 
+0

这是一个我试过,但它不是为我工作'db.facebook_data.group({ 关键:{'likes.data.category':1} reduce:function(curr,result) –

+0

也许尝试聚合:http:// docs.mongodb.org/manual/tutorial/aggregation-with-user-preference-data/ – John

+2

如果'data'属性值构成为一个阵列,而不是作为属性,这将是微不足道与聚合有关。 – WiredPrairie

回答

2

试试这个(收藏应该是你有收集)

var mapFunction = function() { 
    for (a in this.likes.data){ 
     var name = this.likes.data[a].category; 
     emit(name, 1); 
    } 
} 
var reduceFunction = function(key, val){ 
    return Array.sum(val); 
} 
db.collection.mapReduce(mapFunction, reduceFunction, {out: "myresult"}); 
db.myresult.find(); 
+0

抱歉耽搁。我已经实现了您查询的格式,但它返回空结果集 –

+0

首先尝试在蒙戈控制台,看看是否有任何结果。 – Boklucius

相关问题