我想知道是否可以使用管道從用戶集合中選擇在另一個集合中找到的陣列中不存在的所有用戶。我有兩個系列:users和events. 我想獲取尚未添加到事件中的所有用戶。
用戶模式
{
_id: ObjectId
name: string
}
事件架構
{
_id: ObjectId
name: string
users: ObjectId[]
}
我正在摸索查找、展開和匹配,并且知道如果沒有管道這可能很簡單,但我想確保分頁作業并且我不會將 100 個用戶加載到 RAM 中(假設管道是一個更多有效的方法?也許我錯了,mongodb服務器也必須在聚合期間加載所有內容)。
uj5u.com熱心網友回復:
這是一個查找的解決方案。
pipeline = [
{
$lookup: {
from: "users",
let: { user_ids: "$users" },
pipeline: [
{ $match: { $expr: { $not: { $in: ["$_id", "$$user_ids"] } } } },
],
as: "AbsentUsers",
},
},
];
在Mongodb Playground中查看它并自己參考檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/417224.html
標籤:
