我想在mongodb上获取聊天记录。所以我需要在mongodb中使用逻辑查询
我有一个消息对象。消息必须,发件人和消息。
例如;在mongodb:
- &gt; 到: 发件人: B 消息:< / em> blabla
- &gt; 到: B 发件人: 消息: blahblah
- &gt; 到: 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。
我需要A和B之间的演讲。
答案 0 :(得分:1)
看起来你非常接近,只需要清理一下即可:
db.collection('test').find({$or: [
{"to": to, "sender": sender},
{"to": sender, "sender": to}
]}).limit(20).toArray(function(err, messages) {
console.log(messages);
});
同一查询对象中的字段之间存在隐式$and
。