MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Chuyển đổi các điều kiện truy vấn JSON thành các hoạt động MongoDB / Mongoose

Bạn cần tạo $ expr của MongoDB tương tự như truy vấn bạn nhận được từ mô-đun trình tạo truy vấn góc . Vì các ruleSets có thể được lồng vào nhau nên bạn cần chạy hàm ánh xạ của mình một cách đệ quy. Đoạn mã dưới đây có thể không bao gồm mọi trường hợp có thể xảy ra nhưng sẽ cung cấp cho bạn một phần giới thiệu tốt để bắt đầu với việc lập bản đồ như vậy.

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

Biểu thức kết quả có thể được chuyển tới find của MongoDB phương pháp

db.col.find(mongoDbQuery);

hoặc vào $ match giai đoạn đường ống:

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



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:truy vấn phạm vi về thời gian chèn với _id và ObjectID

  2. Tổng hợp và giảm bớt một mảng lồng nhau dựa trên một ObjectId

  3. Làm cách nào để thêm id duy nhất hai cột vào mongodb trong ứng dụng sao băng?

  4. MongoDb với FastAPI

  5. MongoDB Cập nhật phần tử mảng (tài liệu có khóa) nếu tồn tại, nếu không sẽ đẩy