2014-08-29 3 views
0

mongodb에서 채팅 기록을 가져오고 싶습니다. mongodb에서 논리적 쿼리를 사용해야합니다.
메시지 객체가 있습니다. 메시지에는 보낸 사람과 메시지가 있어야합니다.

예 : MongoDB의 물 :
논리 쿼리를 통해 mongodb에서 node.js로 데이터를 가져 오는 방법은 무엇입니까?

->행 :발신자 : B 메시지 : blabla
->행 : B 발신자 :메시지 : blahblah
->에 : C 발신자 :메시지 : 하하

는 I는 A와 B의 한계 사이 지난 20 만 음성이 필요 node.js에서 어떻게 할 수 있습니까?

내 코드 : 나에게

function getLastMessageFor(to,sender){ 
    MongoClient.connect('mongodb://127.0.0.1:27017/mydb', function(err, db) { 
    if (err) 
     throw err; 
    console.log("Connected to Database"); 

    db.collection('test').find($or :[ $and[{"to":to},{"sender":sender}], $and[{"to":sender},{"sender":to}]]).limit(..){}) 
    }); 
} 

, 나는 {(to = toName AND sender = senderName) OR (to = senderName AND sender = toName)}.last(20)이의 논리가 필요합니다. 그러나 어떻게 mongodb에서 그것을 nodej로 할 수 있습니까? 나는 A와 B 사이의 연설을해야 할 마지막 당신이 단지로 약간 그것을 청소, 아주 가까이있어 보인다 (20)

+0

죄송합니다. 붙여 넣기 문제가 있습니다. 아직 시도하지 않았으므로 더러운 코드를 작성했습니다.이 논리를 이해하면 'find()'코드를 여기에 완전히 쓸 수 있습니까? – erginduran

답변

1

:

db.collection('test').find({$or: [ 
    {"to": to, "sender": sender}, 
    {"to": sender, "sender": to} 
]}).limit(20).toArray(function(err, messages) { 
    console.log(messages); 
}); 

같은 필드 사이에 암시 적 $and을있다 쿼리 개체.

관련 문제