two gte fechas dates convert mongodb

gte - mongodb filter date between



¿Cómo convierto una propiedad en MongoDB de texto a tipo de fecha? (4)

Este código debería hacerlo:

> var cursor = db.ClockTime.find() > while (cursor.hasNext()) { ... var doc = cursor.next(); ... db.ClockTime.update({_id : doc._id}, {$set : {ClockInTime : new Date(doc.ClockInTime)}}) ... }

En MongoDB, tengo un documento con un campo llamado "ClockInTime" que se importó de CSV como una cadena.

¿Qué db.ClockTime.update() tiene una declaración db.ClockTime.update() apropiada para convertir estos valores basados ​​en texto a un tipo de datos de fecha?


Este es un código de muestra genérico en python que utiliza pymongo

from pymongo import MongoClient from datetime import datetime def fixTime(host, port, database, collection, attr, date_format): #host is where the mongodb is hosted eg: "localhost" #port is the mongodb port eg: 27017 #database is the name of database eg : "test" #collection is the name of collection eg : "test_collection" #attr is the column name which needs to be modified #date_format is the format of the string eg : "%Y-%m-%d %H:%M:%S.%f" #http://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior client = MongoClient(host, port) db = client[database] col = db[collection] for obj in col.find(): if obj[attr]: if type(obj[attr]) is not datetime: time = datetime.strptime(obj[attr],date_format) col.update({''_id'':obj[''_id'']},{''$set'':{attr : time}})

para más información: http://salilpa.com/home/content/how-convert-property-mongodb-text-date-type-using-pymongo


Si necesita verificar si el campo ya se ha convertido, puede usar esta condición:

/usr/bin/mongo mydb --eval ''db.mycollection.find().forEach(function(doc){ if (doc.date instanceof Date !== true) { doc.date = new ISODate(doc.date); db.mycollection.save(doc); } });''

De lo contrario, la línea de comando puede romperse.


Tengo exactamente la misma situación que Jeff Fritz.

En mi caso, he tenido éxito con la siguiente solución más simple:

db.ClockTime.find().forEach(function(doc) { doc.ClockInTime=new Date(doc.ClockInTime); db.ClockTime.save(doc); })