簡體   English   中英

是否有 mongodb 查詢合並特定 mongodb 文檔中的字段

[英]Is there a mongodb query to merge fields in a specific mongodb document

所以,假設我有一個像這樣的文件:

{
  "country": "USA",
  "capital": "Washington DC",
  "language": "English",
  "other": {
    "China": {
      "capital": "Shanghai",
      "language": "Chinese"
    },
    "Spain": {
      "capital": "Madrid",
      "language": "Spanish"
    }
  }
}

現在我想將我的文檔返回為:

{
  "country": "USA",
  "capital": "Washington DC",
  "language": "English",
}

當我將國家/地區選擇為“美國”但將國家/地區設置為“西班牙”時,我希望我的 mongodb 查詢將文檔返回為:

{
  "country": "Spain",
  "capital": "Madrid",
  "language": "Spanish",
}

這些字段應根據“其他”字段中指定的國家合並。 我怎樣才能做到這一點?

試試這個:

country = "Spain"

db.collection.aggregate([
   // Make a uniform structure (why do you have 'USA' and 'other'?)
   { $replaceRoot: { newRoot: { $mergeObjects: ["$other", { USA: { capital: "$capital", language: "$language" } }] } } },
   { $project: { countries: { $objectToArray: "$$ROOT" } } },
   {
      $set: {
         countries: {
            $filter: {
               input: "$countries",
               cond: { $eq: ["$$this.k", country] }
            }
         }
      }
   },
   {
      $replaceRoot: {
         newRoot: {
            $mergeObjects: [
               { country: { $first: "$countries.k" } },
               { $first: "$countries.v" }]
         }
      }
   }
])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM