0
在我的收藏的文件rooms
具有以下結構:
{
"_id": { "$oid": "4edaaa4a8d285b9311eb63ab" },
"users": [
{
"userId": { "$oid": "4edaaa4a8d285b9311eb63a9" },
"unreadMessages": 0
},
{
"userId": { "$oid": "4edaaa4a8d285b9311eb63aa" },
"unreadMessages": 0
},
]
}
我想在遞增所述第二用戶(一個unreadMessages
索引1該陣列),如果我知道第一個用戶的ObjectId
。知道該文檔的_id
已足夠選擇,但爲了更新,我需要能夠引用其他用戶,所以我還通過users
進行了選擇。我用下面的更新調用這樣做:
collections.rooms.update(
{
_id: ObjectId("4edaaa4a8d285b9311eb63ab"),
users: { // not first user
$elemMatch: { $ne: { userId: ObjectId("4edaaa4a8d285b9311eb63a9") } }
}
},
{
// this should increment second user's unreadMessages,
// but does so for unreadMessages of first user
$inc: { "users.$.unreadMessages": 1 }
}
);
它增加第一用戶的unreadMessages
,而不是第二個用戶。我想這是因爲$ne
實際上匹配第一個用戶,顯然這就是users.$
所指的。
我應該如何修改此通話以使第二個用戶的unreadMessages
增加?
我不得不交換。雖然,'$ elemMatch'似乎是必要的,因爲它沒有更新。一切正在工作,謝謝! – pimvdb