如何处理在 $project 阶段添加的字段
How can work on a field which is added in $project stage
我的数据库里有这个数据(这里只提供相关部分):
[
{
"geojson": 5,
"entity_status_update": "2021-12-28T10:16:58.000+00:00"
},
{
"geojson": 7,
"entity_status_update": "2021-12-03T10:16:58.000+00:00"
},
{
"geojson": 2,
"entity_status_update": "2021-11-08T10:16:58.000+00:00"
}
]
我正在尝试添加一个名为 deadline
的新字段,它应该等于 entity_status_update
+geojson
天。我正在使用 mongodb 的 $dateAdd
方法进行添加。我的问题是我找不到在查询中使用 days_to_add
的方法。我想原因是,它还处于$project
阶段。
[
{
"$project": {
"days_to_add": "$geo_json", // use this
"deadline": {
"$dateAdd": {
"startDate": "$entity_status_update",
"unit": "day",
"amount": "$days_to_add" // in here
}
}
}
}
]
我怎样才能做到这一点?
P.S。我一定不能直接在计算中使用geojson
。
您可以使用 $addFields
添加 days_to_add
,然后在您的 $project
阶段使用它
db.collection.aggregate([
{
"$addFields": {
"days_to_add": "$geojson"
}
},
{
"$project": {
"days_to_add": 1,
"deadline": {
"$dateAdd": {
"startDate": "$entity_status_update",
"unit": "day",
"amount": "$days_to_add"
}
}
}
}
])
我的数据库里有这个数据(这里只提供相关部分):
[
{
"geojson": 5,
"entity_status_update": "2021-12-28T10:16:58.000+00:00"
},
{
"geojson": 7,
"entity_status_update": "2021-12-03T10:16:58.000+00:00"
},
{
"geojson": 2,
"entity_status_update": "2021-11-08T10:16:58.000+00:00"
}
]
我正在尝试添加一个名为 deadline
的新字段,它应该等于 entity_status_update
+geojson
天。我正在使用 mongodb 的 $dateAdd
方法进行添加。我的问题是我找不到在查询中使用 days_to_add
的方法。我想原因是,它还处于$project
阶段。
[
{
"$project": {
"days_to_add": "$geo_json", // use this
"deadline": {
"$dateAdd": {
"startDate": "$entity_status_update",
"unit": "day",
"amount": "$days_to_add" // in here
}
}
}
}
]
我怎样才能做到这一点?
P.S。我一定不能直接在计算中使用geojson
。
您可以使用 $addFields
添加 days_to_add
,然后在您的 $project
阶段使用它
db.collection.aggregate([
{
"$addFields": {
"days_to_add": "$geojson"
}
},
{
"$project": {
"days_to_add": 1,
"deadline": {
"$dateAdd": {
"startDate": "$entity_status_update",
"unit": "day",
"amount": "$days_to_add"
}
}
}
}
])