2015-11-06 81 views
0

我有一个用户和消息之间的连接表,我将得到所有的messageUserConnection - 发送者的对象(userCreatedMessage和userReceivedMessage是相同的),并且消息ID是相同的并且读取是false任何messageUserConnection或者说出来简单:发送者/用户将得到所有的消息用户连接,并非所有的接收者都已确认消息。MongoDB查找结果

查询 - 字符串MessageUserConnection:

db.MessageUserConnection.find() 

MessageUserConnection条目发件人

MessageUserConnection一个其中消息的接收器还没有证实消息(邮件ID是相同的,并且读出= FALSE)

{ 
    "confirmationNeeded": true, 
    "read": false, 
    "userCreatedMessage": DBRef("User", 
    ObjectId("5589929b887dc1fdb501cdba")), 
    "userReceivedMessage": DBRef("User", 
    ObjectId("5589929b887dc1fdb501cdba")), 
    "message": DBRef("Message", 
    ObjectId("563c57adb1a9bb55d70bd407")) 
} 

这是我的查询:

db.MessageUserConnection.find({ $and: [ {'confirmationNeeded': true}, { $and: [ {'userCreatedMessage.$id' : ObjectId('5589929b887dc1fdb501cdba') }, {'userReceivedMessage.$id' : ObjectId('5689929b887dc1fdb501cdbc') } ] } ] }) 

我现在的问题是,我不知道如何扩大查询,以便考虑接收器的读取属性。

这将是巨大的,如果有人可以给我一个提示我怎么能做到这一点。 非常感谢!

[编辑] My Problem

这里我的问题的图形可视化。我将是 - 在这种情况下 - 只与ID MessageUserConnection = 1,因为一个用户(具有ID = 3),其已接收到该消息没有读该消息。 有没有可能通过一个MongoDB查询来做到这一点? 非常感谢!

+0

所以,你想在'$和'一个以上的条件.. MI吧?? – Moumit

+0

是的,但我不知道如何与$和发送者的messageId,比如何检查** **读设置为false,其中消息ID就像是发送者messageuserconnection相同的查询。谢谢! – quma

回答

0
db.MessageUserConnection.find({ $and: [ {'confirmationNeeded': true}, {'read': false}, {'userCreatedMessage.$id' : ObjectId('5589929b887dc1fdb501cdba') }, {'userReceivedMessage.$id' : ObjectId('5689929b887dc1fdb501cdbc') } ] }) 

我想简单地可以通过上提查询,如果我得到你的问题做到这一点..不知道:(

+0

为什么即使第一个'$和'?MongoDB默认$和查询元素之间默认 – Sammaye