[英]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.