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 に答える