Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用MongoDB更改聚合中的空值_Mongodb - Fatal编程技术网

如何使用MongoDB更改聚合中的空值

如何使用MongoDB更改聚合中的空值,mongodb,Mongodb,我很难让这个代码正常工作。我在mongo db中有一个聚合查询,我在其中执行一些操作。没有$ifNull操作符的查询工作正常,但是我得到了一些我不想打印的null值。我已经阅读了$ifNull运算符的文档,但是我无法让这段代码正常工作。到目前为止我有这个代码,巫婆给了我这个错误: SyntaxError: Unexpected token : 我想这是ifnull中的“:”但是我不知道为什么。我正在关注官方网站文档中的sintax。我还尝试使用另一个项目字段来过滤空值,但没有成功。 这是到目前

我很难让这个代码正常工作。我在mongo db中有一个聚合查询,我在其中执行一些操作。没有$ifNull操作符的查询工作正常,但是我得到了一些我不想打印的null值。我已经阅读了$ifNull运算符的文档,但是我无法让这段代码正常工作。到目前为止我有这个代码,巫婆给了我这个错误:

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]

我无法帮助您让聚合返回您想要的内容,因为我不知道您到底在寻找什么。如果您在这方面需要更多帮助,您能否编辑问题以包含示例文档和您希望从中获得的结果的描述?

我编辑了我的问题,添加了一些我实际错误的详细信息。我遇到了一些文档的问题,这些文档在日期字段上有空值,我无法聚合它们。(我试图排除并仅计算某个特定字段中存在的问题)我错误地编辑了您的答案,您是否可以删除我的编辑以便其他人可以看到您的答案?我编辑了我的问题,添加了我实际错误的一些细节。我遇到了一些文档的问题,这些文档在日期字段上有空值,我无法聚合它们。(我试图排除并仅统计某个特定字段中存在的内容)我错误地编辑了您的答案,您是否可以删除我的编辑,以便其他人可以看到您的答案?