使用聚合从 mongodb 中填充,从对象中排除某些属性
Exclude certain attributes from object using the populate from mongodb using aggregate
我想使用 mongodb 中的 populate() 函数排除例如电子邮件和地址,只需从中获取名称:
示例:
const results = await Seller.aggregate(aggregatePipeline).exec();
const sellers = await Seller.populate(results, { path: "user" });
填充用户而不是:
...
user: {
email: "hgjh@gmail.com",
address:{},
name: "name"
}
我只想拥有(从路径中排除某些数据):
...
user: {
name: "name"
}
你可以做任何一个,
const sellers = await Seller.populate(results, { path: "user", select: '-
email -address' });
或
const sellers = await Seller.populate(results, { path: "user", select:
'name' });
据我了解 mongoose 文档 https://mongoosejs.com/docs/populate.html,填充为 $lookup 用于解析与其他集合的关系。
MongoDB has the join-like $lookup aggregation operator in versions >= 3.2. Mongoose has a more powerful alternative called populate(), which lets you reference documents in other collections.
在您的情况下,您不需要使用其他集合解析字段。您已经有了目标的最终数据。您可以在管道聚合的末尾使用 $project 来仅保留名称字段,例如:
{ $project: { name:1 } }
如果我帮到了你,请告诉我。
编辑:
我读得太快了,如果你在填充之后而不是在聚合之后有这个数据资源,你可能 select
你的最终字段,就像说的那样
这里
user: {
email: "hgjh@gmail.com",
address:{},
name: "name"
}
我想使用 mongodb 中的 populate() 函数排除例如电子邮件和地址,只需从中获取名称:
示例:
const results = await Seller.aggregate(aggregatePipeline).exec();
const sellers = await Seller.populate(results, { path: "user" });
填充用户而不是:
...
user: {
email: "hgjh@gmail.com",
address:{},
name: "name"
}
我只想拥有(从路径中排除某些数据):
...
user: {
name: "name"
}
你可以做任何一个,
const sellers = await Seller.populate(results, { path: "user", select: '-
email -address' });
或
const sellers = await Seller.populate(results, { path: "user", select:
'name' });
据我了解 mongoose 文档 https://mongoosejs.com/docs/populate.html,填充为 $lookup 用于解析与其他集合的关系。
MongoDB has the join-like $lookup aggregation operator in versions >= 3.2. Mongoose has a more powerful alternative called populate(), which lets you reference documents in other collections.
在您的情况下,您不需要使用其他集合解析字段。您已经有了目标的最终数据。您可以在管道聚合的末尾使用 $project 来仅保留名称字段,例如:
{ $project: { name:1 } }
如果我帮到了你,请告诉我。
编辑:
我读得太快了,如果你在填充之后而不是在聚合之后有这个数据资源,你可能 select
你的最终字段,就像说的那样
这里
user: {
email: "hgjh@gmail.com",
address:{},
name: "name"
}