如何使用MongoDB更改聚合中的空值
我很难让这个代码正常工作。我在mongo db中有一个聚合查询,我在其中执行一些操作。没有$ifNull操作符的查询工作正常,但是我得到了一些我不想打印的null值。我已经阅读了$ifNull运算符的文档,但是我无法让这段代码正常工作。到目前为止我有这个代码,巫婆给了我这个错误:如何使用MongoDB更改聚合中的空值,mongodb,Mongodb,我很难让这个代码正常工作。我在mongo db中有一个聚合查询,我在其中执行一些操作。没有$ifNull操作符的查询工作正常,但是我得到了一些我不想打印的null值。我已经阅读了$ifNull运算符的文档,但是我无法让这段代码正常工作。到目前为止我有这个代码,巫婆给了我这个错误: SyntaxError: Unexpected token : 我想这是ifnull中的“:”但是我不知道为什么。我正在关注官方网站文档中的sintax。我还尝试使用另一个项目字段来过滤空值,但没有成功。 这是到目前
SyntaxError: Unexpected token :
我想这是ifnull中的“:”但是我不知道为什么。我正在关注官方网站文档中的sintax。我还尝试使用另一个项目字段来过滤空值,但没有成功。
这是到目前为止的反查询:
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 } }
])
编辑:一切都很好,这是一个查询,实际上是工作计数招聘ppl给一个特定的星期
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时使用的相同查询时,它会给我一个错误,因为有些文档没有该字段。我真的很困惑,我该如何过滤所有在文档中首先检查字段的文档,并计算它们一周的时间。
错误发生在$week行上,该行试图将空日期转换为一周,它给了我一个错误。我重新格式化并修补了语法错误:
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 } }
])
问题是对象中没有$divide
表达式,因此
[ "$divide" : stuff, more, stuff]
而不是
[{ "$divide" : stuff }, more, stuff]
我无法帮助您让聚合返回您想要的内容,因为我不知道您到底在寻找什么。如果您需要更多帮助,请编辑问题以包含示例文档和您希望从中获得的结果的说明。我重新格式化并修补了语法错误:
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 } }
])
问题是对象中没有$divide
表达式,因此
[ "$divide" : stuff, more, stuff]
而不是
[{ "$divide" : stuff }, more, stuff]
我无法帮助您让聚合返回您想要的内容,因为我不知道您到底在寻找什么。如果您在这方面需要更多帮助,您能否编辑问题以包含示例文档和您希望从中获得的结果的描述?我编辑了我的问题,添加了一些我实际错误的详细信息。我遇到了一些文档的问题,这些文档在日期字段上有空值,我无法聚合它们。(我试图排除并仅计算某个特定字段中存在的问题)我错误地编辑了您的答案,您是否可以删除我的编辑以便其他人可以看到您的答案?我编辑了我的问题,添加了我实际错误的一些细节。我遇到了一些文档的问题,这些文档在日期字段上有空值,我无法聚合它们。(我试图排除并仅统计某个特定字段中存在的内容)我错误地编辑了您的答案,您是否可以删除我的编辑,以便其他人可以看到您的答案?