0

我需要一个查询来优化集合中的数据并将所有字段date_passport从 Ymd 格式转换为 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")
}
4

1 回答 1

0

这里我如何解决这个问题:

如果您的日期是 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
    }
});
于 2013-10-14T16:22:44.123 回答