如何在Mongo中减去两个日期

时间:2019-08-04 20:52:07

标签: mongodb

考虑此代码。我在3T Studio聚合查询中有此查询。

{
    "book.newpublisheddate": {$subtract : [ {$date: "book.published"}, {$date: "1970-01-01T00:00:00.000+0000"}] }
}

我不能使用像{$subtract : [ "book.published", new Date()] }这样的代码,因为它说它不是有效的json。我正在使用mongo 3.6.13。

2 个答案:

答案 0 :(得分:1)

使用此收藏集:

> db.test.find()
{
  "_id": 0,
  "book": {
    "published": ISODate("2019-08-04T22:49:14.416Z")
  }
}

此聚合有效:

> db.test.aggregate([
    {$project:
      {dateDiff: {$subtract: ['$book.published', ISODate('1970-01-01')] }}}
  ])
{ "_id": 0, "dateDiff": NumberLong("1564958954416") }

请注意,您不需要将book.published包围在$date内,而只需使用$book.published。您还需要ISODate('1970-01-01')

这在Studio3T“ shell模式”和mongo shell内有效。

答案 1 :(得分:0)

不知道您想在哪里使用{$subtract : [ "book.published", new Date()] }。假设它是mongo shell-很可能您在"book.published"之前缺少美元符号。尝试"$book.published"-使用$来引用字段。