根据mongo中的日期计算文档

时间:2017-01-05 12:34:27

标签: mongodb

我是mongodb的新手

尝试根据集合中的字段值计算文档。 我曾经在插入时插入DATE()。 但是在计算文档时,它没有显示输出

 { 
    "_id" : 6, 
    "WebUser" : "F",
    "PassWord" : "F", 
    "MailId" : "F@mail.com",
    "Country" : "In",
    "Contact" : { "Mobile" : "6" },
    "DOJ" : "Thu Jan 05 2017 16:55:08 GMT+0530 (India Standard Time)"
 }

尝试以下选项。但没用。

db.WebUser.count( { DOJ: { $gt: new Date('01/01/2017') } } )
0
db.WebUser.count( { DOJ : { $gt: new Date('01-05-2017 16:55:08') } } )
0
db.WebUser.count( { DOJ : { $gt: new Date('Thu Jan 05 2017 16:55:08 GMT+0530 (India Standard Time') } } )
0

如何处理mongo db中的DATE以查找(选择),更新和删除。 如何将日期转换为字符串和字符串到日期? 如何添加一个月/年/日,如Day + 1,Month + 5 date和isodate之间有什么区别

由于

2 个答案:

答案 0 :(得分:0)

您必须将记录插入

db.test.insert({date: new Date()})

将日期保存为:{" _id" :ObjectId(" 586e3e258fcf67917c9d4cb4")," date" :ISODate(" 2017-01-05T12:37:57.450Z")}

但我认为你把它插入

db.test.insert({date: Date()})

将日期转换为字符串。哪个保存日期为{" _id" :ObjectId(" 586e3e328fcf67917c9d4cb5")," date" :" 2017年1月5日星期四18:08:10 GMT + 0530(IST)" } 作为你的

答案 1 :(得分:0)

您的文档在DOJ字段中包含简单字符串。它不是Date个对象。插入文档时应插入Date对象:

db.WebUser.insert({_id:6,Country:"In",DOJ:new Date("01/01/2017")})

之后,您会在DOJ字段中看到正确的数据类型:

{
    "_id" : 6,
    "Country" : "In",
    "DOJ" : ISODate("2016-12-31T18:30:00Z")
}

但您可以轻松修复数据。只需选择包含DOJ字段类型字符串的所有文档并更新这些文档:

db.WebUser.find({"DOJ":{$type:2}}).forEach(function(doc){
   db.WebUser.update({_id:doc._id},{$set:{DOJ:new Date(doc.DOJ)}})
})

运行此脚本后,您的文档将以正确的数据格式显示日期,您的查询将正常运行。