В MongoDB у меня есть документ с полем «дата», который находится в массиве.Изменить дату строки на дату ISO в 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();
}
})
its throws Error: "message" : "invalid ISO date"
Я хочу, чтобы преобразовать эту дату строку в ISO date.I изменились с некоторым кодом, но его добавление новой даты в формате ISO, но я хочу для обновления, который уже доступен, не нужно вставлять новый. Одно решение, которое я получил и от stackoverflow, но это добавление нового поля в мой документ, я думаю, что это из-за массива, я хочу обновить существующий.
без использования pymongo, как я могу это сделать? –
Вы должны обновить в MongoDB напрямую, не так ли? Затем вам понадобится интерфейс, который соединит ваш язык программирования с mongodb. В Python это бывает «pymongo» (есть другие, но, поверьте, pymongo легко освоить, чем другие). – x899
Я использовал этот скрипт; но это создает новые поля в документе, которые также из массива ... его не обновляет ... db.dummy.find(). forEach (function (doc) { doc.mongodbdate = new Date (data.mongodbdate) db.dummy.save (doc); }) –