MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Konversikan kondisi kueri JSON ke operasi MongoDB/Mongoose

Anda perlu membuat $expr MongoDB yang mirip dengan kueri yang Anda dapatkan dari Modul pembuat kueri sudut . Karena ruleSets dapat disarangkan, Anda perlu menjalankan fungsi pemetaan secara rekursif. Kode di bawah ini mungkin tidak mencakup setiap kasus yang mungkin, tetapi seharusnya memberi Anda pengantar yang baik untuk memulai pemetaan tersebut.

let q = {
  "condition": "and",
  "rules": [
    {
      "field": "Brief_D_Reactiedatum",
      "operator": "!=",
      "value": "Eventtoets_Fn"
    },
    {
      "condition": "or",
      "rules": [
        {
          "field": "Alleen_AO",
          "operator": "=",
          "value": "Parkeerreden"
        }
      ]
    }
  ]
};

const conditions = { "and": "$and", "or": "$or" };
const operators = { "=": "$eq", "!=": "$ne", "<": "$lt", "<=": "$lte", ">": "$gt", ">=": "$gte" };

const mapRule = rule => ({
    [operators[rule.operator]]: [ "$"+rule.field, rule.value ]
});

const mapRuleSet = ruleSet => {
    return {
        [conditions[ruleSet.condition]]: ruleSet.rules.map(
            rule => rule.operator ? mapRule(rule) : mapRuleSet(rule)
        )
    }
};

let mongoDbQuery = { $expr: mapRuleSet(q) };
console.log(mongoDbQuery);

Ekspresi hasil dapat diteruskan ke find Mon MongoDB metode

db.col.find(mongoDbQuery);

atau ke $match tahap saluran:

db.col.aggregate([{ $match: mongoDbQuery }]);



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Menggunakan deklarasi tidak ditemukan di driver mongodb c++

  2. Perlu panduan tentang pencarian agregat mongo untuk menghitung subnode di semua node anak untuk setiap node

  3. Networkx tidak pernah selesai menghitung sentralitas Antara untuk 2 juta node

  4. Cara mencari di array array objek di mongodb

  5. Bagaimana cara mendapatkan catatan N terakhir di mongodb?