Mongodb 聚合中的Mongo项目错误

Mongodb 聚合中的Mongo项目错误,mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,当日期的格式为YYYY-01-01 蒙哥日期 PHP日期返回 date('Y-m-d',946665000) => 2000-01-01 MongoDB聚合 结果 { "result" : [ { "_id" : ObjectId("530dce78b25d9d526f44e104"), "pd" : 1999, "pn" : "JP2000285176A" } ], "ok" : 1 } 聚合返回1999而不是2000

当日期的格式为
YYYY-01-01

蒙哥日期 PHP日期返回

date('Y-m-d',946665000) => 2000-01-01
MongoDB聚合 结果

{
"result" : [
    {
        "_id" : ObjectId("530dce78b25d9d526f44e104"),
        "pd" : 1999,
        "pn" : "JP2000285176A"
    }
],
"ok" : 1
}
聚合返回1999而不是2000

更新 悬而未决的问题


我认为这是一个与时区相关的问题


有关可能的解决方案,请参阅。

正如您在问题中更新的一样,此问题已在中讨论过,将在版本中解决

现在,由于所有时间都存储在Mongodb中的UTC中,因此您可以使用
$project
将时间移到您的时区。添加时间有
$add
,减去时间有
$subtract
。注意,加法/减法必须以毫秒[hours*60*60*1000]为单位完成

例如,在您的情况下,由于您来自印度[+5:30],您可以在UTC[或GMT]上加上5:30小时

db.patents.aggregate(
           {'$match':{'pn':'JP2000285176A'}},
           {'$project':{'pn':1,'pd':{'$year':{$add:['$pd',5.5*60*60*1000]}}}}
)

您是否可以打印“$pd”(整个日期对象)的值,而不是试图提取年份,这样我们就可以知道存储在MongoDB中的完整日期?
{
"result" : [
    {
        "_id" : ObjectId("530dce78b25d9d526f44e104"),
        "pd" : 1999,
        "pn" : "JP2000285176A"
    }
],
"ok" : 1
}
db.patents.aggregate(
           {'$match':{'pn':'JP2000285176A'}},
           {'$project':{'pn':1,'pd':{'$year':{$add:['$pd',5.5*60*60*1000]}}}}
)