2017-04-19 26 views
2

這是我的「羣組」數據如何在node和mongodb中查找?

{ 
    "_id": { 
     "$oid": "58f7537ec422895572e988a1" 
    }, 
    "name": "aaa", 
    "groupname": "group north,group south", 
    "mobilenumber": "0509867865", 
    "userid": "6035555c16" 

} 

我在這裏的「組」收集數據的

{ 
    "_id": { 
     "$oid": "58e5eb3c035555c33f979daf" 
    }, 
    "groupname": "group north", 
    "message": [ 
     { 
      "val": "hai how are you", 
      "key": "1" 
     }, 
     { 
      "val": "i am fine", 
      "key": "2" 
     } 

    ] 
}, 
{ 
    "_id": { 
     "$oid": "3c035555c33f979daf58e5eb" 
    }, 
    "groupname": "group south", 
    "message": [ 
     { 
      "val": "testing", 
      "key": "1" 
     } 

    ] 
}, 
{ 
    "_id": { 
     "$oid": "55c3c035533f979f58e5ebda" 
    }, 
    "groupname": "group east", 
    "message": [ 
     { 
      "val": "where are you from", 
      "key": "1" 
     } 

    ] 
} 

在用戶組,我試圖讓mobilenumber基於groupname和我有兩個羣體:group northgroup south。獲取組名後,我需要獲取消息。我怎麼寫這個來找到這個條件。我的目標是發送group north, group south消息給用戶。

Usergroup.findOne({ 
      mobilenumber: 0509867865 
     }, 
     function(err, usergroup) { 
      if (err) { 
       return handleError(res, err); 
      } 
      if (!usergroup) { 
       return res.status(404).send('Not Found'); 
      } 
      console.log(usergroup.groupname); 
     //group north ,group south 
      Group.find({ 
        groupname: 
       }, 
       function(err, group) { 
        if (err) { 
         return handleError(res, err); 
        } 

        return res.json(group); 
       }); 
     }); 
+0

什麼是你的mongo服務器版本? – Veeram

+0

我正在使用mongolab –

+0

http://docs.mlab.com/ops/#current-version。你能檢查使用此鏈接? – Veeram

回答

1

可以使用$in操作:

Usergroup.findOne({ 
      mobilenumber: 0509867865 
     }, 
     function(err, usergroup) { 
      if (err) { 
       return handleError(res, err); 
      } 
      if (!usergroup) { 
       return res.status(404).send('Not Found'); 
      } 
      console.log(usergroup.groupname); 
     //group north ,group south 
      Group.find({ 
        groupname: { $in: usergroup.groupname.split(",") } 
       }, 
       function(err, group) { 
        if (err) { 
         return handleError(res, err); 
        } 

        return res.json(group); 
       }); 
     }); 
+0

http://stackoverflow.com/questions/43867811/how-to-do-user-already-there-update-if-not-there-create-in-particular-collecti –

+0

我會盡力回答一旦我達到電腦。 –

0

可以使用str.split(',')簡單地得到groupnameUsergroupsplit它的兩組名稱數組,然後查詢Group兩個groupname爲如下:

Usergroup.findOne({ mobilenumber: 0509867865 }, function(err, usergroup) { 
     if (err) { 
      return handleError(res, err); 
     } 
     if (!usergroup) { 
      return res.status(404).send('Not Found'); 
     } 
     console.log(usergroup.groupname); 

     var groupname = usergroup.groupname; 
     var groups  = groupname.split(','); 
     var messages = {}; 

     for (var i = groups.length - 1; i >= 0; i--) { 
      Group.find({ groupname: groups[i] }, function(err, group) { 
       if (err) { 
        return handleError(res, err); 
       } 
       messages[group.groupname] = group.message; 
      }); 
      if (i == 0) { 
       return res.status(200).json(messages); 
      } 
     } 

    }); 
+0

我越來越空對象 –

+0

http://stackoverflow.com/questions/43867811/how-to-do-user-already-there-update-if-not-there-create-in-particular-collecti –

1

您可以使用th e在3.4版本的彙總下方。

查詢將在usergroups收集與mobilenumber隨後$split$match文件分割groupnames$lookupgroupnamegroups集合中的messages。最後一步是將$unwindmobile_group數組改爲$projectmessages對於每個groupname

db.usergroups.aggregate([ 
    { $match: { mobilenumber:"0509867865" } }, 
    { $project: { groupname:{ $split: [ "$groupname", ',' ] } } }, 
    { $lookup: 
     { 
      from: "groups", 
      localField: "groupname", 
      foreignField: "groupname", 
      as: "mobile_group" 
     } 
    }, 
    {$unwind:"$mobile_group"}, 
    { $project : { groupname:"$mobile_group.groupname", "messages" : "$mobile_group.message" } } 
]) 
+0

http:///stackoverflow.com/questions/43542270/how-can-i-combine-multiple-collection-into-one-collection-using-with-lookup-mon @Veeram幫我出 –

+0

http://stackoverflow.com/questions/ 43867811 /如何做-DO用戶已經有更新 - 如果 - 不存在創建功能於特定-collecti –