2015-04-22 49 views
0

這裏是「對話」收集如何使用貓鼬在MongoDB中的對象內搜索?

{ 
    "_id" : ObjectId("5536028a33e52be617b8bb2a"), 
    "messages" : [ 
     { 
      "from" : ObjectId("5534c58ac2bda5fe18cfcb97"), 
      "_id" : ObjectId("5536028a33e52be617b8bb2b"), 
      "created" : ISODate("2015-04-21T07:55:54.572Z"), 
      "read" : false, 
      "message" : "dummy message", 
      "participants" : [ 
       ObjectId("5534c58ac2bda5fe18cfcb97"), 
       ObjectId("5530af38576214dd3553331c") 
      ] 
     } 
    ], 
    "participants" : [ 
     ObjectId("5530af38576214dd3553331c") 
    ], 
    "__v" : 0 
} 

使用下面的代碼我得到的對象

collection.findById(id,function(err,conv){}) 

的對象結構現在使用這個對象,我需要找到是否參加陣列(對象內部)包含對象標識'5530af38576214dd3553331c'。如何使用貓鼬在物體內部找到內部?

回答

0

可以使用find()方法,你的查詢對象將有idparticipants領域:

var mongoose = require("mongoose"); 
var participant_id = mongoose.Types.ObjectId("5530af38576214dd3553331c"); 
var query = { _id: id, participants: participant_id }; 

Conversation.find(query) 
      .exec(function(err, conv){ 
       // Handle err 
      }); 
+0

謝謝你這麼多chridam :)這確實工作:)還有一個問題 集合中有很多對象,每個對象都有參與者數組。我想列出在'特定'數組中具有特定元素(這裏是對象)的對象。我怎樣才能做到這一點 ? –

+0

至於你的其他問題,我不知道我是否正確,但如果你可以創建一個新的問題,例如樣本文件和查詢的預期結果等足夠的細節,那就太好了。 – chridam

0

你可以用貓鼬find

collection.find({participants: <your participant id here>}).exec(callback)