MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Eval MongoDB Query con NodeJS

La stringa che stai presentando è una query della shell mongodb. Questa stringa contiene tipi di dati specifici della shell mongodb e come tale è utilizzabile solo all'interno della shell mongodb. Non puoi analizzare o valutare queste query in un ambiente diverso (javascript), perché non lo sono JSON valido. Quindi, eval o JSON.parse non funzionerebbe nemmeno, a causa dei tipi di dati specifici.

Se desideri serializzare le query mongodb per l'utilizzo in diversi ambienti, puoi utilizzare MongoDB Extended JSON.

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

Questo è JSON standard che può contenere tipi di dati mongodb. La tua query vorrebbe questo in JSON esteso MongoDB.

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

Se si desidera analizzare o valutare una stringa come questa per passarla al driver mongodb node.js, è necessario utilizzare una libreria per deserializzarla in un oggetto Driver MongoDB Node.js appropriato.

Puoi utilizzare questa libreria per farlo:
https://www. npmjs.com/package/mongodb-extended-json

Puoi anche utilizzare questa libreria nel tuo browser per creare le query. Oppure potresti creare manualmente le query mongodb.

Non sono a conoscenza del pacchetto plug-in/npm che ti consentirebbe di convertire automaticamente le query della shell mongodb in MongoDB Extended JSON. Potresti provare a convertirli automaticamente implementando alcuni dei tipi da te ( ISODate, ObjectId ). Tuttavia non avrai mai una piena compatibilità tra la shell mongodb e il driver mongodb nodejs, molti metodi hanno firme e tipi di ritorno diversi, i cursori funzionano in modo diverso, ecc...

C'è anche questo progetto, un'alternativa al driver mongodb nodejs ufficialmente supportato, che cerca di imitare un po' di più la shell se lo apprezzi davvero, ma non ti aiuterà con la tua query specifica, dovrai comunque convertire it.
https://docs.mongodb.org/ecosystem/ driver/node-js/