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

Eval MongoDB-forespørgsel med NodeJS

Den streng, du præsenterer, er en mongodb shell-forespørgsel. Denne streng indeholder mongodb shell-specifikke datatyper og er derfor kun brugbar inde i mongodb shell. Du kan ikke analysere eller evaluere disse forespørgsler i et andet (javascript) miljø, fordi de ikke er gyldig JSON. Derfor eval , eller JSON.parse ville ikke engang virke på grund af de specifikke datatyper.

Hvis du vil serialisere mongodb-forespørgsler til brug i forskellige miljøer, kan du bruge MongoDB Extended JSON.

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

Dette er standard JSON, som kan indeholde mongodb datatyper. Din forespørgsel vil gerne have dette i MongoDB udvidet JSON.

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

Hvis du vil parse eller evaluere en streng som denne for at sende den videre til node.js mongodb-driveren, skal du bruge et bibliotek til at deserialisere dette til et korrekt Node.js MongoDB Driver-objekt.

Du kan bruge dette bibliotek til at gøre det:
https://www. npmjs.com/package/mongodb-extended-json

Du kan også bruge dette bibliotek i din browser til at bygge forespørgslerne. Eller du kan bygge mongodb-forespørgslerne i hånden.

Jeg er ikke bekendt med plugin / npm-pakke, der vil give dig mulighed for automatisk at konvertere mongodb shell-forespørgsler til MongoDB Extended JSON. Du kan prøve at konvertere dem automatisk ved at implementere nogle af typerne selv (ISODate, ObjectId). Du vil dog aldrig have fuld kompatibilitet mellem mongodb-skallen og mongodb nodejs-driveren, mange metoder har forskellige signaturer og returtyper, markører fungerer anderledes osv...

Der er også dette projekt, et alternativ til den officielt understøttede mongodb nodejs-driver, som forsøger at efterligne skallen lidt mere, hvis du virkelig værdsætter det, men det vil ikke hjælpe dig med din specifikke forespørgsel, du skal stadig konvertere det.
https://docs.mongodb.org/ecosystem/ drivere/node-js/




  1. Redis + Node.js - hvordan henter jeg værdierne

  2. PHP kan ikke finde MongoDB-driveren

  3. redis vs hasselcast

  4. Hvordan får man størrelsen på et enkelt dokument i Mongodb?