0
我正在嘗試創建一個用戶可以觀看項目的監視列表。我試圖通過將監視列表字段添加到我的用戶集合來創建它。監視列表將是與其他項目對應的ID數組。如何檢查數組中的每個項目是否存在
用戶收集:
- ID:對象ID
- 名:字符串
- 監視列表:陣列即[9872,342,4545,234,8745]
我的問題與查詢這個結構有關。我希望能夠在傳遞用戶ID和〜20個ID的數組的情況下編寫查詢,並檢查用戶觀看哪些ID(即哪些ID存在於該用戶的監視列表字段中)。
我最初嘗試這樣的:
db.users.find({
_id: 507c35dd8fada716c89d0013,
watchlist: { $in: [342, 999, 8745, etc...] }
});
但是這給了我任何包含這些監視列表項目,這是不是我想要的用戶列表。我真正想要的是包含這樣的一個陣列的響應:
{
id: 342,
exists: true
},
{
id: 999,
exists: false
},
{
id: 8745,
exists: true
}
我想甚至可以確定剛開匹配項目的數組:
{
_id: 507c35dd8fada716c89d0013,
watching: [342, 8745]
}
這是可行的,否則我會最好將監視列表移動到一個單獨的集合中,並將用戶作爲一個數組來移動(我對後一種方法的關注是用戶只能看幾百個項目,但成千上萬的用戶可能會看到相同的項目。)
嘗試顛倒它。嘗試在每個監視列表上存儲用戶標識列表,並查詢監視列表是否存在給定的用戶標識 –