如何获取mongo db中单个字段的详细信息

时间:2016-12-08 12:55:12

标签: mongodb

我正在制作一个网络应用。目前我将消息存储在消息列中,如下所示。

enter image description here

我有一个名为msges的列,我有关键和值详细信息的消息。我想创建一个我传递时间的函数,它会返回它的细节。谁能帮我?我可以获得单场但我不知道如何通过关键值获得它。这是我的功能。

function getMessageDetails(uname,time,callback){
  global.users.find({"uname" : uname,"msges":time},
  // {"friends.friendUname":1,_id:0},
  {_id:0},
  function(err,doc){
    if(err){
      callback(false,err,"Message not found.",null);
    }else{
      callback(true,null,"",doc);
    }
  }
  );
}

提前致谢。 :)

1 个答案:

答案 0 :(得分:1)

我个人会尝试对您的数据进行一些不同的建模,如果您有:

{
   _id: "123123",
   //...
   friends: [
      { friendName: "etc..."}
   ],
   msges : [
       {
           time: "16:25:02",
           from: "alizia",
           title : "hi buddy",
           read: true
       },
       {
           time: "12:25:02",
           from: "bob",
           title : "hi bobby",
           read: false
       }
   ]
}

您可以通过以下方式查询以下数据:

db.users.find({_id: "123123", "msges.time" : "16:25:02"}, { "msges.$.from" : 1 })

并将根据查询提取一个msg:

{
        "_id" : "123123",
        "msges" : [
                {
                        "time" : "16:25:02",
                        "from" : "alizia",
                        "title" : "hi buddy",
                        "read" : true
                }
        ]
}