2017-10-16 65 views
0

我正在使用nodejs和MongoDB获取数据。我在MongoDB中有对象。现在我正在使用明智的日期获取数据,而我的日期时间字段是时间戳。我想使用MongoDB从开始日期到结束日期获取数据。 必须imp注意我想打印日期在我预期的操作。 我在这里,这是我的目标=>使用nodejs和mogodb获取像“date is not defind”这样的错误? datetime存储作为db中的时间戳

{ 
    "_id" : ObjectId("595be16ee04602135828e25c"), 
    "Action" : "Comment", 
    "datetime" : 1507099928000 // 4th oct 2017 convert date just for info here write 
}, 
{ 
    "_id" : ObjectId("595be16ee04602135828e25c"), 
    "Action" : "Comment", 
    "datetime" : 1508139441716 // 16th oct 2017 convert date just for info here write 
} 
{ 
    "_id" : ObjectId("595be16ee04602135828e25c"), 
    "Action" : "Comment", 
    "datetime" : 1508139441716 // 16th oct 2017 convert date just for info here write 
} 
{ 
    "_id" : ObjectId("595be16ee04602135828e25c"), 
    "Action" : "Like", 
    "datetime" : 1508139441716 // 16th oct 2017 convert date just for info here write 
}, 

这是我的查询=>

InstaAc.aggregate([ 
        { 
         "$match": { 
          "_id": ObjectId("595be16ee04602135828e25c"), 
          "datetime": { 
          "$lte": 1508141028150, "$gte": 1507622568000 
          } 
         }, 
          "Action": { 
           $in: ["Comment", "Like"] 
          } 
        },            
        { 
         "$addFields": { 
          "datetime": { 
           "$add": [new Date(0), "$datetime"] 
          } 
         } 
        }, 
         { 
          "$group": { 
           "_id": { 
            "$dateToString": { 
             "format": "%d-%m-%Y", 
             "date": "datetime" 
            } 
           }, 
           "commentcount": { $sum: { $cond: [{ $eq: ["Action", "Comment"] }, 1, 0] } }, 
           "likecount": { $sum: { $cond: [{ $eq: ["Action", "Like"] }, 1, 0] } },         
          } 
         },       
         { 
          "$sort": { 
           "_id": 1 
          } 
         } 
      ]).exec(function (err, data) { 
      if (err) { 
console.log(err); 
} 
else { 
console.log(data);   
} 
}) 

这是我上面的查询,我得到一个错误这样的“日期没有定义 “ 请,任何人,知道如何解决此问题,那么请帮助我。

我的除外O/P =>

{ _id: '16-10-2017', commentcount: 2 ,likecount:1}, 

回答

0

在运行查询创建一个Date对象,并使用该对象,而不是新的日期(0)。

var myDate = new Date(0); 

而且在查询

"$addFields": { 
       "datetime": { 
       "$add": [myDate, "$datetime"] 
       } 
+0

现在越来越喜欢这个错误“无法识别的管道艺名:‘$ addfields’” – Edit

+0

@Edit什么版本蒙戈您使用的是? –

+0

4.11.0使用.... – Edit

相关问题