sql >> Base de Datos >  >> NoSQL >> MongoDB

Node.js a MongoDB:buscar por fecha

No necesitas nada de este envoltorio. Una fecha es una fecha :

var zeroth = {$or:[ {start: new Date(), {users:{$size:2}} ]}; 

Ahora, por supuesto, si esas "fechas" en su documento son en realidad "cadenas" y no una fecha adecuada tipos entonces ese es tu problema. Y lo que realmente necesita corregir esos valores para que sean fechas reales.

Esto se aplica a cualquier implementación del idioma, donde debería estar trabajando con el tipo de "fecha" nativo y dejar que el controlador haga la conversión por usted.

Cómo determinar si el campo es una cadena

Bueno, la diferencia clara es cuando miras un documento en el shell de mongo, si es un tipo de fecha BSON real, se verá así:

"start": ISODate("2014-03-31T08:47:48.946Z"),

Si eso no es lo suficientemente claro, existe el $type operador que puede usar en una consulta como esta:

db.collection.find({ "start": { "$type": 2 } }).count()

También no MongoDB que está haciendo esto si es una cadena, pero una mala implementación en la aplicación o importación que fue responsable de crear esto. De eso se trataban los puntos planteados en la respuesta inicial.