2016-08-19 53 views
0

你會如何在Mongo中執行以下sql?查詢

SELECT * FROM messages WHERE (sender='me' AND recipient='them') OR (sender='them' AND recipient='me') 

僞代碼示例:

(sender == me && recipient == them) || (sender == them && recipient <= me) 

我試圖讓我(「我」)已發送給「他們」或其他方式輪的所有消息(我有所有的消息從'他們'收到)。

我不能得到$或$和並很好地協同工作...

我使用蒙戈3.2.8和貓鼬(用Node.js的)

+0

嘗試:'找到({$或:[{$和:[{發件人: 「他們」 },{recipient:「me」}]},{$ and:[{sender:「me」},{recipient:「them」}]})}) –

回答

0

我試過..創建了一個樣本數據集下面,看起來像它的工作原理

試試這個

> db.messages.insert({"sender":"me","recipient":"them"}) 
WriteResult({ "nInserted" : 1 }) 
> db.messages.insert({"sender":"them","recipient":"me"}) 
WriteResult({ "nInserted" : 1 }) 
> db.messages.insert({"sender":"a","recipient":"b"}) 
WriteResult({ "nInserted" : 1 }) 
> db.messages.insert({"sender":"me","recipient":"b"}) 
WriteResult({ "nInserted" : 1 }) 
> db.messages.insert({"sender":"them","recipient":"b"}) 
WriteResult({ "nInserted" : 1 }) 

檢查集合

> db.messages.find(); 
{ "_id" : ObjectId("57b78b2c8d2d515b0309868e"), "sender" : "me", "recipient" : "them" } 
{ "_id" : ObjectId("57b78b3a8d2d515b0309868f"), "sender" : "them", "recipient" : "me" } 
{ "_id" : ObjectId("57b78b418d2d515b03098690"), "sender" : "a", "recipient" : "b" } 
{ "_id" : ObjectId("57b78b468d2d515b03098691"), "sender" : "me", "recipient" : "b" } 
{ "_id" : ObjectId("57b78b4c8d2d515b03098692"), "sender" : "them", "recipient" : "b" } 

查詢

> db.messages.find({"$or":[{"sender":"me","recipient":"them"},{"sender":"them","recipient":"me"}]}); 

輸出

{ "_id" : ObjectId("57b78b2c8d2d515b0309868e"), "sender" : "me", "recipient" : "them" } 
{ "_id" : ObjectId("57b78b3a8d2d515b0309868f"), "sender" : "them", "recipient" : "me" } 

>

+0

這有助於解決您的問題嗎? – user641887

+0

是的,謝謝! – MasudM

0

{$or: [ {sender: "me", recipient:"them"}, {sender: "them", recipient:"me"} ] }