2015-11-06 110 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