我试图通过对月份进行案例来将名为“摘要”的时区字段应用于我的文档,为什么我不能在切换案例中使用“月份”投影字段?
db.steps.aggregate( [
{
$project:
{
patientName : 1,
month: {$month: '$dateTime'},
hour: {$hour: '$dateTime'},
minute: {$minute: '$dateTime'},
day: {$dayOfMonth: '$dateTime'},
"summary" :
{
$switch:
{
branches: [
{
case: { $eq : [ '$month', 6 ] },
then: "month 6"
},
{
case: { $eq : [ '$month', 7 ] },
then: "month 7"
}
],
default: "No value found."
}
}
}
},
{ $group: { _id: {"day":"$day", "month":"$month", "summary":"$summary"}}}
]);
它没有得到正确的,而是使用默认值:
{ "_id" : { "day" : 24, "month" : 9, "summary" : "No value found." } }
{ "_id" : { "day" : 29, "month" : 9, "summary" : "No value found." } }
{ "_id" : { "day" : 22, "month" : 6, "summary" : "No value found." } }
{ "_id" : { "day" : 19, "month" : 7, "summary" : "No value found." } }
{ "_id" : { "day" : 6, "month" : 8, "summary" : "No value found." } }
{ "_id" : { "day" : 2, "month" : 9, "summary" : "No value found." } }
{ "_id" : { "day" : 24, "month" : 7, "summary" : "No value found." } }
{ "_id" : { "day" : 6, "month" : 9, "summary" : "No value found." } }
{ "_id" : { "day" : 31, "month" : 7, "summary" : "No value found." } }
{ "_id" : { "day" : 10, "month" : 9, "summary" : "No value found." } }
{ "_id" : { "day" : 12, "month" : 9, "summary" : "No value found." } }
{ "_id" : { "day" : 22, "month" : 9, "summary" : "No value found." } }
{ "_id" : { "day" : 13, "month" : 9, "summary" : "No value found." } }
不能在同一个舞台上使用a投影场吗?
谢谢
答案 0 :(得分:0)
您无权访问同一阶段内的字段。以下是两种可能的解决方案:
db.steps.aggregate( [
{
$project:
{
patientName : 1,
month: {$month: '$dateTime'},
hour: {$hour: '$dateTime'},
minute: {$minute: '$dateTime'},
day: {$dayOfMonth: '$dateTime'},
"summary" :
{
$switch:
{
branches: [
{
case: { $eq : [ {$month: '$dateTime'}, 6 ] },
then: "month 6"
},
{
case: { $eq : [ {$month: '$dateTime'}, 7 ] },
then: "month 7"
}
],
default: "No value found."
}
}
}
},
{ $group: { _id: {"day":"$day", "month":"$month", "summary":"$summary"}}}
]);
db.steps.aggregate( [
{
$project:
{
patientName : 1,
month: {$month: '$dateTime'},
hour: {$hour: '$dateTime'},
minute: {$minute: '$dateTime'},
day: {$dayOfMonth: '$dateTime'}
}
},
{
$set: // $project would remove all others
{
"summary" :
{
$switch:
{
branches: [
{
case: { $eq : [ '$month', 6 ] },
then: "month 6"
},
{
case: { $eq : [ '$month', 7 ] },
then: "month 7"
}
],
default: "No value found."
}
}
}
},
{ $group: { _id: {"day":"$day", "month":"$month", "summary":"$summary"}}}
]);
注意,我更喜欢
{ $cond:
{
if: {$in: ['$month', [6,7]]},
then: { $concat: [ "month ", '$month' ] },
else: "No value found."
}
}