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();