【发布时间】:2018-07-06 14:16:32
【问题描述】:
我很难让这段代码正常工作。我在 mongo db 中有一个聚合查询,我在其中执行一些操作。没有 $ifNull 运算符的查询工作正常,但是我得到了一些我不想打印的空值。我已经阅读了 $ifNull 操作符的文档,但我无法让这段代码正常工作。到目前为止我有这个代码,女巫给了我这个错误:
SyntaxError: Unexpected token :
我认为这是 ifnull 中的“:”,但我不知道为什么。我正在遵循官方网站文档中的sintax。我也尝试使用另一个项目字段来过滤 Null 值,但它没有用。 这是到目前为止的查询:
db.cleandrivers.aggregate(
[
{
$project :
{ _id:"$_id",
week : {$week : "$recruiter.date"},
dif: {
$ifNull: [$divide : [{$subtract : ["$personal.stat.first_inspected","$recruiter.date"]} , 1000 * 60 * 60 ], "0"]
}
}
}, { $match : { week: 11 } }
])
编辑:一切正常,这是一个实际工作的查询,计算特定一周的招募人员。
db.cleandrivers.aggregate(
... [
... {
... $project :
... { _id:"$_id",
... week : {$week : "$personal.stat.recruited"}
... }
... },
... { $match : { $and: [ {week: 10}] } },
... {$group: { _id: "Sum",sum: {$sum : 1}}} ])
输出:
{ "_id" : "Sum", "sum" : 199 }
这是我的文件sintax:
"personal" : {
"stat" : {
"recruited" : ISODate("2015-02-02T14:30:32.089Z"),
"first_inspected" : ISODate("2015-02-02T14:33:15.956Z"),
"targo" : ISODate("2015-02-06T17:51:00.672Z")
}
问题是,当我使用我在尝试计算招募的 ppl 时使用的相同查询时,它给了我一个错误,因为有些文档没有该字段。我真的很困惑如何过滤所有在其文档中具有 first_inspected 字段的文档,并计算它们一周的时间。 错误发生在 $week 行,女巫试图将空日期转换为一周,它给了我一个错误。
【问题讨论】:
标签: mongodb