В MongoDB у меня есть документ с полем под названием «дата», которое находится в массиве.
{
"_id" : ObjectId("587627a2125a730f78a20859"),
"data" : [
{
"Number" : "359983007479839",
"date" : "2016-02-10T21:56:33.000Z"
}
]
после этого я запускаю этот скрипт:
db.dummy.find().forEach(function(doc){
doc.mongodbdate = ISODate(doc.mongodbdate);
db.dummy.save(doc);
})
И это дает мне вывод ниже;
{
"_id" : ObjectId("588724ba2746360c04a51e4b"),
"data" : [
{
"Number" : "359983007479839",
"mongodbdate" : "2016-02-12T18:01:06.000Z"
}
],
"mongodbdate" : ISODate("2017-01-24T15:26:24.537+05:30")
}
Я пробовал это также:
var bulk = db.dummy.initializeUnorderedBulkOp(),
count = 0;
db.dummy.find().forEach(function(doc) {
bulk.find({ "_id": doc._id }).updateOne({
"$set": { "mongodbdate": ISODate(doc.mongodbdate) }
})
count++;
if (count % 1000 == 0) {
// Execute per 1000 operations and re-init
bulk.execute();
bulk = db.dummy.initializeUnorderedBulkOp();
}
})
выдает ошибку: «сообщение»: «недопустимая дата ISO»
Я хочу преобразовать эту строковую дату в дату ISO. Я изменил некоторый код, но добавил новую дату в формате ISO, но я хочу обновить уже доступную дату, не нужно вставлять новую. Одно решение я также нашел в stackoverflow, но это добавление нового поля в мой документ, я думаю, это из-за массива, я хочу обновить существующий.