2016-12-08 13 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 }) 

とクエリに基づいて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/ –

関連する問題