Mongodb 将日期Y-m-d转换为MongoDate
我需要一个查询来优化集合中的数据,并将所有字段Mongodb 将日期Y-m-d转换为MongoDate,mongodb,Mongodb,我需要一个查询来优化集合中的数据,并将所有字段date\u passport从Y-m-d格式转换为MongoDate格式,仅使用mongo查询即可 目前: { _id: ObjectId("522e261a7ecb75b34e000000"), type: "Chat", last_name: "Test", date_passport: '2013-11-28' } 需要: { _id: ObjectId("522e261a7ecb75b34e0000
date\u passport
从Y-m-d格式转换为MongoDate格式,仅使用mongo查询即可
目前:
{
_id: ObjectId("522e261a7ecb75b34e000000"),
type: "Chat",
last_name: "Test",
date_passport: '2013-11-28'
}
需要:
{
_id: ObjectId("522e261a7ecb75b34e000000"),
type: "Chat",
last_name: "Test",
date_passport: ISODate("2013-11-28T02:00:00.%LZ")
}
我如何解决这个问题:
如果您的日期是dd/mm/YYYY
db.customer.find(
{
date_passport : {$nin : ['', undefined]} // find for not is empty or undefined documents
}
).forEach( function(obj) {
if (typeof(obj.date_passport)!='object') { //check if is not already a ISODate
var datePt = obj.date_passport.split('/'); //split the string dd/mm/YYYY
var dateEn = datePt[2] + '-' + datePt[1] + '-' + datePt[0]; // reorganize to YYYY-mm-dd
obj.date_passport = new ISODate(dateEn); // convert in ISODate
db.customer.save(obj); //save and thats all
}
});
如果您的数据已经是YYYY mm dd
db.customer.find(
{
date_passport : {$nin : ['', undefined]} // find for not is empty or undefined documents
}
).forEach( function(obj) {
if (typeof(obj.date_passport)!='object') { //check if is not already a ISODate
obj.date_passport = new ISODate(obj.date_passport); // convert in ISODate
db.customer.save(obj); //save and thats all
}
});
您需要转换数据。您可以从MongoDB控制台执行此操作。只需循环浏览每个文件并更新
validade_pass
字段。此外,YYYY-mm-dd
是日期格式,因此更便于携带和支持。如果有人想将日期存储为字符串,应该使用ISO8601。但是,如果我需要在mongodb上查询日期,我的日期字段需要作为对象ISODate,对吗?我的意思是,和mysql这样的日期一起工作。在我看来,使用字符串yyy-mm-dd在mongo上存储我的日期就像在mysql上做同样的事情一样(将日期存储为字符串类型,而不是日期),这种方式使数据难以处理。我同意你的观点。在JSON中发送日期时,我使用ISO 8601(date.toISOString()
或自定义格式为YYYY-mm-dd
),有时仅当不需要范围比较时,我才将其用作db中的文字字符串字段。