【发布时间】:2021-06-12 13:39:07
【问题描述】:
我有一个文档集合,其中一些文档已归档 atd,而其他文档在嵌套字段 voyage_details 内有 etd,例如:
[
{
"_id" : ObjectId("..."),
"voyage_details" : {
"atd" : "15-Mar-21"
}
},
{
"_id" : ObjectId("..."),
"voyage_details" : {
"etd" : "15-Mar-21"
}
}
]
现在,我想编写一个 mongo 聚合查询,在其中创建一个新字段的条件是,如果文档中包含键 atd,那么我想在其中添加键 atd 的值该新字段,如果文档中不存在该键,则在该新字段中添加键 etd 的值。
我编写了一个这样的聚合查询,以在atd 或etd 的基础上添加一个新字段,无论两者都存在于voyage_details 对象中:
{
"$addFields": {
"sailing_date": {
"$cond": {
"if": { "voyage_details.atd": { "$exists": True } },
"then": "$voyage_details.atd",
"else": "$voyage_details.etd"
}
}
}
}
谁能指导我编写正确的查询以在我的 mongo 聚合中添加一个新字段,以便我可以使用 atd 或 etd 两个字段中的任何一个在 voyage_details 部分中。
【问题讨论】:
-
您使用的是哪个 MongoDB 版本?
-
我认为它低于版本 4,大约在 3.4 或 3.6 左右
-
您要更新数据库中的现有文档吗?
-
不,我不想更新它们
标签: mongodb mongodb-query aggregation-framework pymongo pymongo-3.x