我想使用 mongodb 中的 populate() 函式排除例如電子郵件和地址,只需從中獲取名稱:
例子:
const results = await Seller.aggregate(aggregatePipeline).exec();
const sellers = await Seller.populate(results, { path: "user" });
當填充用戶而不是擁有:
...
user: {
email: "[email protected]",
address:{},
name: "name"
}
我只想擁有(從路徑中排除某些資料):
...
user: {
name: "name"
}
uj5u.com熱心網友回復:
你可以做任何一個,
const sellers = await Seller.populate(results, { path: "user", select: '-
email -address' });
或者
const sellers = await Seller.populate(results, { path: "user", select:
'name' });
uj5u.com熱心網友回復:
據我了解 mongoose 檔案 https://mongoosejs.com/docs/populate.html,填充為 $lookup 用于解決與其他集合的關系。
MongoDB 在 >= 3.2 版本中具有類似連接的 $lookup 聚合運算子。Mongoose 有一個更強大的替代方法,稱為 populate(),它允許您參考其他集合中的檔案。
在您的情況下,您不需要使用其他集合決議欄位。您已經擁有了目標的最終資料。您可以在管道聚合結束時使用 $project 來僅保留名稱欄位,例如:
{ $project: { name:1 } }
如果我幫助了你,請告訴我。
編輯 :
我讀得太快了,如果你在填充之后而不是在聚合之后有這個資料資源,你可能select是你的最后一個欄位,就像這里所說的https://stackoverflow.com/a/72481338/16205278
user: {
email: "[email protected]",
address:{},
name: "name"
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/485352.html
標籤:javascript mongodb 表示 猫鼬 总计的
