Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Khớp nhiều tiêu chí bên trong mảng với MongoDB

Sử dụng Aggregation Framework kết hợp toán tử $elemMatch. Tạo collection:

> db.matchMultipleCriteriaDemo.insertOne({
  "EmployeeDetails": [
    {"EmployeeName": "Chris", "Salary": 45000, "Language": "Java"},
    {"EmployeeName": "Robert", "Salary": 41000, "Language": "Python"}
  ]
});
{ "acknowledged": true, "insertedId": ObjectId("5cea3bf0ef71edecf6a1f689") }
> db.matchMultipleCriteriaDemo.insertOne({
  "EmployeeDetails": [
    {"EmployeeName": "David", "Salary": 55000, "Language": "C++"},
    {"EmployeeName": "Bob", "Salary": 61000, "Language": "C"}
  ]
});
{ "acknowledged": true, "insertedId": ObjectId("5cea3bf1ef71edecf6a1f68a") }

Hiển thị tất cả document:

> db.matchMultipleCriteriaDemo.find().pretty();

Kết quả:

{
  "_id": ObjectId("5cea3bf0ef71edecf6a1f689"),
  "EmployeeDetails": [
    { "EmployeeName": "Chris", "Salary": 45000, "Language": "Java" },
    { "EmployeeName": "Robert", "Salary": 41000, "Language": "Python" }
  ]
}
{
  "_id": ObjectId("5cea3bf1ef71edecf6a1f68a"),
  "EmployeeDetails": [
    { "EmployeeName": "David", "Salary": 55000, "Language": "C++" },
    { "EmployeeName": "Bob", "Salary": 61000, "Language": "C" }
  ]
}

Truy vấn khớp nhiều tiêu chí trong mảng (tìm document có EmployeeName="Bob" VÀ Language="C"):

> db.matchMultipleCriteriaDemo.aggregate({
  "$match": {
    "EmployeeDetails": {
      "$elemMatch": { "EmployeeName": "Bob", "Language": "C" }
    }
  }
}).pretty();

Kết quả:

{
  "_id": ObjectId("5cea3bf1ef71edecf6a1f68a"),
  "EmployeeDetails": [
    { "EmployeeName": "David", "Salary": 55000, "Language": "C++" },
    { "EmployeeName": "Bob", "Salary": 61000, "Language": "C" }
  ]
}