2014-08-29 2 views
0

Я хочу получить истории чатов на mongodb.So Мне нужно использовать логический запрос в mongodb.
У меня есть объект сообщения. Сообщение должно, отправитель и сообщение.

Например, в MongoDB:
Как получить данные о mongodb через логический запрос в node.js?

->к:Отправитель: Б сообщение: блабла
->к: B отправителя: A сообщение : blahblah
->к: C Отправитель:сообщение: хаха

мне нужна только речь между 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 в nodejs. мне нужна речь между А и В прошлом 20.

+0

Извините, скопируйте проблему с пастой. Я написал грязный код, поэтому я еще не пробовал. Если вы понимаете эту логику, можете ли вы полностью написать коды «найти()» здесь? – 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 среди полей в той же объект запроса.