MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Преобразувайте JSON условия на заявка в MongoDB/Mongoose операции

Трябва да изградите $expr на MongoDB което е подобно на заявката, която получавате от модула за създаване на заявки Angular . Тъй като наборите от правила могат да бъдат вложени, трябва да стартирате функцията си за картографиране рекурсивно. Кодът по-долу вероятно не покрива всеки възможен случай, но трябва да ви даде добро въведение, за да започнете с такова картографиране.

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);

Резултатният израз може да бъде предаден или към find на MongoDB метод

db.col.find(mongoDbQuery);

или в $match етап на тръбопровод:

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да съхранявате геопространствена информация в mongoDB

  2. Spring-data-mongo не може да инстанцира java.util.List с помощта на Constructor

  3. Разделената колекция MongoDB не се ребалансира

  4. MongoDB добавяне към полето за присъединяване на колекция от основното

  5. Заявката за актуализиране на Mongo db не работи във вградени документи в azure cosmos db