Mongodb 我可以在$lookup上使用投影吗?
我有这个功能:Mongodb 我可以在$lookup上使用投影吗?,mongodb,Mongodb,我有这个功能: return db.collection( process.env.SPACECOLLECTION ).aggregate( [ { $lookup: { from: "users", localField: "challengers", foreignField: "_id",
return db.collection( process.env.SPACECOLLECTION ).aggregate( [
{
$lookup: {
from: "users",
localField: "challengers",
foreignField: "_id",
as: "members"
}
}
] ).toArray();
我得到的是:
{
_id: 5dfa26f46719311869ac1756,
tokens: [],
friends: [Array],
incomingFriendRequest: [],
incomingSpaceInvites: [],
name: 'Account 2',
email: 'account2@gmail.com',
password: '$2b$10$VRrdAdFdGAlqN5lZ/J/za.S5gqjCpII8LBhPLNiTmHrFDHvESRRTC',
spaces: [Array]
}
我想要的是:
{
_id: 5dfa26f46719311869ac1756,
name: 'Account 2',
email: 'account2@gmail.com',
}
我的问题是users集合包含密码和令牌等字段。这是我在执行此查找功能时不希望收到的内容
基本上,我的问题是:有没有办法从文档中选择哪些字段,类似于投影在findOne上的工作方式
如果没有,我会怎么做?在我从数据库中获取该字段后,是否删除该字段
谢谢大家! 是的,您可以这样使用:
非常感谢你,它起作用了!我不知道这意味着什么哈哈,但我会调查的:D
return db.collection( process.env.SPACECOLLECTION ).aggregate( [
{
$lookup: {
from: "users",
let: { challengers : "$challengers"},
pipeline: [
{ $match:
{ $expr: // i'm assuming challengers is an array.
{ $in: [ "$_id", "$$challengers" ] },
}
},
{ $project: { password: 0, email: 0 } }
],
as: "members"
}
}
] ).toArray();