【发布时间】:2018-10-03 19:31:54
【问题描述】:
我的 MongoDB 后端有一个聚合管道,它经过多个步骤,最后一个是 $project,如下所示:
{
"_id": 1.0,
"visit": {
"_id": 1.0,
"service": 1.0,
"dateOfVisit": 1.0,
"type": 1.0
},
"customer": {
"_id": 1.0,
"name": 1.0
},
"staffPerson": {
"_id": 1.0,
"name": 1.0
},
"balance": 1.0,
"updatedAt": 1.0
}
我现在要做的是将其限制为“余额”> 0 的记录。换句话说,我只想返回有余额到期的记录。我试过这样做:
{
"_id": 1.0,
"visit": {
"_id": 1.0,
"service": 1.0,
"dateOfVisit": 1.0,
"type": 1.0
},
"customer": {
"_id": 1.0,
"name": 1.0
},
"staffPerson": {
"_id": 1.0,
"name": 1.0
},
"balance": { $gt : 0 },
"updatedAt": 1.0
}
但这给了我这个错误信息:
表达式 $gt 正好有 2 个参数。 1个被传入。
然后我尝试了这个:
{
"_id": 1.0,
"visit": {
"_id": 1.0,
"service": 1.0,
"dateOfVisit": 1.0,
"type": 1.0
},
"customer": {
"_id": 1.0,
"name": 1.0
},
"staffPerson": {
"_id": 1.0,
"name": 1.0
},
"balance": { $gt : 0, 1.0 },
"updatedAt": 1.0
}
但这又给我带来了另一个错误,关于字段名称需要用引号引起来。所以看起来我的语法在这里不正确。
我也尝试传入一个包含两个值的数组:
{ $gt: [ <expression1>, <expression2> ] }
但这会返回一个布尔值,而不是实际值。
如何在此处使用$gt,仅返回“余额”大于零的记录?
【问题讨论】:
-
您是否尝试在
$project步骤中执行$gt?还是在上一步中? -
在 $project 步骤中。我需要在不同的步骤中执行此操作吗?
标签: javascript mongodb aggregation