繁体   English   中英

如果局部字段具有一维数组形式的值,如何在猫鼬中使用查找?

[英]How to use lookup in mongoose if local field have array form value in single dimension?

一个字段在单一维度上具有价值。 我想使用该字段查找另一个文档,但只获得一个记录。

这是我的用户架构和具有汇总查询的组织架构。 用户和组织文档中的数据

users[
{
   _id:32442141dfdsaf2
    name: user1
 },
 {
   _id:42442141dfdsaf2
    name: user2
 },
]

orgs[
  {
   _id:87878978978
   name: org1
   userIds: array(ObjectId('32442141dfdsaf2'),ObjectId('42442141dfdsaf2'))
  }
]

db.orgs.aggregate([

{
        $lookup:
           {
             from: 'users',
             let: { assignedTo: '$userIds' },
             pipeline: [
               {
                 $match: {
                   $expr: {
                     $and: [
                       { $in: ['$_id', '$$assignedTo'] },
                     ],
                   },
                 },
               },
             ],
             as: 'users',
           },
      },
])

如果localField是一个数组,则可以将数组元素与标量foreignField进行匹配,而无需$ unwind阶段。

db.orgs.aggregate([{
       $lookup:
       {
            from: "users",
            localField: "userIds",
            foreignField: "_id",
            as: "users"
       }
}])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM