繁体   English   中英

根据是否存在另一个集合获取 MongoDB 集合字段值

[英]Get the MongoDB collection field value based on if another collection exists or not

我有两个像这样的 collections:

集合_1

[{
   name: "p1",
   use: "u1"
},
{
   name: "p2",
   use: "u2"
}, ...]

集合_2

 [{
    user_name: "p1",
    user_id: "Id1"
    date: "DATE"
 },{
    user_name: "p2",
    user_id: "Id2"
    date: "DATE"
 },{
    user_name: "p3",
    user_id: "Id1"
    date: "DATE"
 }, ...]

如果collection_1名称字段与collection_2 user_name字段匹配并且user_id等于“Id1”,我希望最喜欢的字段为 boolean。

这在 MongoDB 中的聚合或其他更好的方法中是否可行?

//result 
[{
   name: "p1",
   is_favorite: true
},{
   name: "p2",
   is_favorite: false,
},{
   name: "p2",
   is_favorite: true,
}]
  1. $lookup - 集合col1 (带键: name )与col2 (带键: user_name )连接。

  2. $project - 装饰 output 文档。 对于is_favorite字段,使用$in运算符检查Id1是否在col2.user_id数组中。

db.col1.aggregate([
  {
    $lookup: {
      from: "col2",
      localField: "name",
      foreignField: "user_name",
      as: "col2"
    }
  },
  {
    $project: {
      name: 1,
      is_favorite: {
        $in: [
          "Id1",
          "$col2.user_id"
        ]
      }
    }
  }
])

示例 Mongo Playground

暂无
暂无

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

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