2014-02-06 63 views
2

我想查詢sailsjs中的mongodb。 這是我的數據庫的結構sailsjs數組查詢完全匹配

{ 
    "users": [ 
     "52ed09e1d015533c124015d5", 
     "52ed4bc75ece1fb013fed7f5" 
    ], 
    "user_msgs": [ 
     { 
      "sender": "52ed09e1d015533c124015d5", 
      "sendTo": "52ed4bc75ece1fb013fed7f5", 
      "msg": "ss" 
     } 
    ], 
    "createdAt": ISODate("2014-02-06T16:12:17.751Z"), 
    "updatedAt": ISODate("2014-02-06T16:12:17.751Z"), 
    "_id": ObjectID("52f3b461f46da23c111582f6") 
}

我想要搜索這些「用戶」誰誰匹配陣列

 [ 
     "52ed09e1d015533c124015d5", 
     "52ed4bc75ece1fb013fed7f5" 
    ]
 
Message.find({user: ["52ed09e1d015533c124015d5","52ed4bc75ece1fb013fed7f5"]})

該查詢返回一個包含1或2中的所有對象..但我只需要那些exacly比賽1和2, 我也曾嘗試$一切,等等。但沒有工作 請告訴我如何寫查詢與sailsjs支持了Syntex讓這些用戶

回答

1

你需要使用本地蒙戈適配器這樣的:

Message.native(function(err, collection) { 

    collection.find({users:{'$all':["52ed09e1d015533c124015d5","52ed4bc75ece1fb013fed7f5"]}}).toArray(function(err, results) { 

    // Do something with results 

    }); 

}); 
-1
Message.find() 
.where({users: "52ed09e1d015533c124015d5", "52ed4bc75ece1fb013fed7f5"}) 
.exec(function(){ 
    // do something 
}); 

雖然上面的代碼可能工作只吸引那些用戶。我認爲更好的解決方案是在消息模型中定義用戶標識。

我想補充以下屬性郵件型號:

senderID: { 
    type: 'string' 
}, 
receiverID: { 
    type: 'string' 
} 

現在您可以進行查詢更高效使用下面的查詢:

Message.find() 
.where({senderID: "52ed09e1d015533c124015d5"}) 
.where({receiverID: "52ed4bc75ece1fb013fed7f5"}) 
.exec(function(){ 
    // do something 
}); 

這是我走的路線。

+0

謝謝您的回答。但它並沒有爲我工作。上面的模式,我爲mongodb允許1-1和多用戶chat..like組conversation.in「用戶」數組,我想stroe那些在這chat.and用戶ID,而在我想要的EXACT數組用戶..其中也返回所有對象誰擁有其中之一 –

+0

這是不正確的語法:'.where({users:「52ed09e1d015533c124015d5」,「52ed4bc75ece1fb013fed7f5」}) –