Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

209
Vistas
¿Cambiar la fecha de la cadena a la fecha ISO en MongoDB?

En MongoDB, tengo un documento con un campo llamado "fecha" y está en una matriz.

 { "_id" : ObjectId("587627a2125a730f78a20859"), "data" : [ { "Number" : "359983007479839", "date" : "2016-02-10T21:56:33.000Z" } ]

después de eso ejecuto este script:

 db.dummy.find().forEach(function(doc){ doc.mongodbdate = ISODate(doc.mongodbdate); db.dummy.save(doc); })

Y me está dando por debajo de la salida;

 { "_id" : ObjectId("588724ba2746360c04a51e4b"), "data" : [ { "Number" : "359983007479839", "mongodbdate" : "2016-02-12T18:01:06.000Z" } ], "mongodbdate" : ISODate("2017-01-24T15:26:24.537+05:30") }

Intenté esto también:

 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(); } })

arroja Error: "mensaje": "fecha ISO no válida"

Quiero convertir esa fecha de cadena en fecha ISO. He cambiado con algún código, pero está agregando una nueva fecha con formato ISO, pero quiero actualizar la que ya está disponible, no es necesario insertar una nueva. También obtuve una solución en stackoverflow, pero eso es agregar un nuevo campo en mi documento, creo que se debe a la matriz, quiero actualizar el que ya tengo.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Puede usar el módulo dateutil (sudo pip install python-dateutil)

El siguiente es el código de muestra que convierte la cadena ISO en un objeto de tiempo de datos y luego lo inserta en la base de datos mongo.

 import datetime import pymongo import dateutil.parser def getDatetimeFromISO(s): d = dateutil.parser.parse(s) return d conn = pymongo.MongoClient() db = conn.sampleDB collection = db.test post = { "user" : "test1", "date" : getDatetimeFromISO("2016-02-10T21:56:33.000Z") } collection.insert_one(post) conn.close()

En MongoDB

 > db.test.find().pretty() { "_id" : ObjectId("5885b47156addb199a07bf26"), "date" : ISODate("2016-02-10T21:56:33Z"), "user" : "test1" }

Puede actualizar las fechas de cadena al formato ISO en mongoDB de manera similar.

over 4 years ago · Santiago Trujillo Denunciar

0

Solo necesita modificar su código para recorrer la matriz también.

 db.dummy.find().forEach(function (doc) { doc.data.forEach(function (currentValue, index) { doc.data[index].mongodbdate = ISODate(currentValue.mongodbdate); }); db.dummy.save(doc); })
over 4 years ago · Santiago Trujillo Denunciar

0

A partir de la versión 4.0 , es posible agregar $toDate para convertir campos.

Sintaxis general:

 db.collection.updateMany({your_field : {$type: "string"}}, [{"$set": {your_field :{"$toDate": "$your_field"}}}]);

El primer parámetro es el filtro. Encuentre más en documentos oficiales .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda