我已经在聚合项目中创建了一个新字段进行比较,并且我不希望该字段显示在最终结果中。如何排除呢?
这是我的示例查询。在这种情况下,我想隐藏字段yearDate
。有可能吗?
db.user.aggregate([
$project: {name: 1, yearDate: {$month: '$date'}, content: 1, date: 1}},
{
$match: {
$and: [
{
yearDate: {$ne: 2018}
},
{
content: /2018/
}
]
}
},
{
$sort: {
date: 1
}
}
]);
当前结果
{ "date" : "2018-11-01 02:42:20", "content" : 'abc2018', "yearDate" : "2018", "name": "test"}
预期结果
{ "date" : "2018-11-01 02:42:20", "content" : 'abc2018',"name": "test"}
答案 0 :(得分:1)
您需要额外的$project阶段才能从最终结果中排除该字段,请尝试:
db.user.aggregate([
$project: {name: 1, yearDate: {$month: '$date'}, content: 1, date: 1}},
{
$match: {
$and: [
{
yearDate: {$ne: 2018}
},
{
content: /2018/
}
]
}
},
{
$sort: {
date: 1
}
},
{
$project: {
yearDate: 0
}
}
]);