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

Eval MongoDB Consulta con NodeJS

La cadena que está presentando es una consulta de shell de mongodb. Esta cadena contiene tipos de datos específicos de shell de mongodb y, como tal, solo se puede usar dentro del shell de mongodb. No puede analizar ni evaluar estas consultas en un entorno diferente (javascript), porque no son JSON válido. Por lo tanto, eval o JSON.parse ni siquiera funcionaría debido a los tipos de datos específicos.

Si desea serializar consultas mongodb para su uso en diferentes entornos, puede usar MongoDB Extended JSON.

https://docs.mongodb.org/v3.0/ referencia/mongodb-extended-json/

Este es JSON estándar que puede contener tipos de datos mongodb. A su consulta le gustaría esto en JSON extendido de MongoDB.

{
    "_id": {
        "$oid": "536b07935c89be214c000009"
    },
    "date": {
        "$date": "2012-12-19T06:01:17.171Z"
    },
    "mail": {
        "$regex": "test",
        "$options": "i"
    }
}

Si desea analizar o evaluar una cadena como esta para pasarla al controlador mongodb de node.js, necesitará usar una biblioteca para deserializar esto a un objeto de controlador MongoDB de Node.js adecuado.

Podría usar esta biblioteca para hacer eso:
https://www. npmjs.com/package/mongodb-extended-json

También puede usar esta biblioteca en su navegador para crear las consultas. O puede crear las consultas de mongodb a mano.

No estoy al tanto del paquete plugin/npm que le permitiría convertir consultas de mongodb shell a MongoDB Extended JSON automáticamente. Puede intentar convertirlos automáticamente implementando algunos de los tipos usted mismo (ISODate, ObjectId). Sin embargo, nunca tendrá una compatibilidad total entre mongodb shell y el controlador mongodb nodejs, muchos métodos tienen diferentes firmas y tipos de devolución, los cursores funcionan de manera diferente, etc...

También existe este proyecto, una alternativa al controlador mongodb nodejs compatible oficialmente, que intenta imitar un poco más el shell si realmente lo valora, pero no lo ayudará con su consulta específica, aún tendrá que convertir it.
https://docs.mongodb.org/ecosystem/ controladores/nodo-js/