Mongodb 如何在Mongo中减去两个日期

Mongodb 如何在Mongo中减去两个日期,mongodb,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。不知道您想在哪里使用{$sub

考虑一下这段代码。我在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。

不知道您想在哪里使用
{$subtract:[“book.published”,new Date()]}
。假设它是mongo shell-最有可能的情况是您在“book.published”之前丢失了一个美元符号。尝试
“$book.published”
-使用
$
引用字段

使用此集合:

> 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内部工作