簡體   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