sql >> Databasteknik >  >> NoSQL >> MongoDB

Eval MongoDB-fråga med NodeJS

Strängen du presenterar är en mongodb-skalförfrågan. Den här strängen innehåller mongodb-skalspecifika datatyper och är som sådan endast användbar i mongodb-skalet. Du kan inte analysera eller utvärdera dessa frågor i en annan (javascript) miljö, eftersom de inte är det giltig JSON. Därför eval , eller JSON.parse skulle inte ens fungera på grund av de specifika datatyperna.

Om du vill serialisera mongodb-frågor för användning i olika miljöer kan du använda MongoDB Extended JSON.

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

Detta är standard-JSON som kan innehålla mongodb-datatyper. Din fråga skulle vilja ha detta i MongoDB utökad JSON.

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

Om du vill analysera eller utvärdera en sträng som denna för att skicka den vidare till node.js mongodb-drivrutinen, skulle du behöva använda ett bibliotek för att deserialisera detta till ett korrekt Node.js MongoDB Driver-objekt.

Du kan använda det här biblioteket för att göra det:
https://www. npmjs.com/package/mongodb-extended-json

Du kan också använda det här biblioteket i din webbläsare för att skapa frågorna. Eller så kan du bygga mongodb-frågorna för hand.

Jag är inte medveten om plugin / npm-paket som skulle tillåta dig att konvertera mongodb-skalfrågor till MongoDB Extended JSON automatiskt. Du kan försöka konvertera dem automatiskt genom att implementera några av typerna själv (ISODate, ObjectId). Men du kommer aldrig att ha full kompatibilitet mellan mongodb-skalet och mongodb nodejs-drivrutinen, många metoder har olika signaturer och returtyper, markörer fungerar annorlunda, etc...

Det finns också detta projekt, ett alternativ till den officiellt stödda mongodb nodejs-drivrutinen, som försöker efterlikna skalet lite mer om du verkligen värdesätter det, men det hjälper dig inte med din specifika fråga, du måste fortfarande konvertera det.
https://docs.mongodb.org/ecosystem/ drivrutiner/node-js/




  1. mongoose Datum jämföra utan tid och Gruppera efter flera egenskaper?

  2. Hur loggar man frågorna som körs av Spring Data MongoDB?

  3. Använda Hive för att interagera med HBase, del 1

  4. Apache HBase Write Path