2016-08-19 2 views
0

Mongo에서 다음 SQL을 어떻게 수행합니까? 쿼리의

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

psuedocode 예 :

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

내가 ('나') '그들'OR 라운드 다른 방법으로 보낸 모든 메시지 (내가 가지고있는 모든 메시지를 얻기 위해 노력하고 있어요 '그들로부터 받았다').

난 .. 시도 샘플 데이터 세트를 생성 ... 나하고 $ 멋지게 함께 작동하도록 내가 몽고 3.2.8와 몽구스 사용하고

+0

시도 :'{(찾을 수 $ 또는 : [{$와 : [{보낸 사람 : "그들" –

답변

0

(Node.js를 가진)을 $를 얻을 수 없다 그것은이

> 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"} ] }