2016-12-08 107 views
-1

我正在製作一個web應用程序。目前我正在將消息存儲在如下的消息列中。如何獲取mongo db中單個字段的詳細信息

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

我想親自嘗試,你的數據有點diffrently模型中,如果您有:

{ 
    _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 }) 

和將基於以下查詢拉出一個味精:

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

感謝您的幫助。我現在試圖這樣做。你能告訴我一個如何刪除它的函數嗎? –

+0

您必須使用'$ pull'和條件進行更新(與上面的查詢相同),請參閱 - https://docs.mongodb.com/v3.0/reference/operator/update/pull/ –

相關問題