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

Thay thế giá trị trong MongoDB Aggregation với $literal

Sử dụng Aggregation Framework kết hợp toán tử $literal để thay thế giá trị trường bằng giá trị tĩnh.

Tạo collection với document:

> db.replaceValueDemo.insertOne(
    {
      _id: 100,
      "EmployeeName": "Chris",
      "EmployeeOtherDetails": { "EmployeeDesignation": "HR", "EmployeeAge": 27 }
    }
); { "acknowledged" : true, "insertedId" : 100 }
> db.replaceValueDemo.insertOne(
    {
      _id: 101,
      "EmployeeName": "David",
      "EmployeeOtherDetails": { "EmployeeDesignation": "Tester", "EmployeeAge": 26 }
    }
); { "acknowledged" : true, "insertedId" : 101 }

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

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

Kết quả:

{ "_id" : 100, "EmployeeName" : "Chris", "EmployeeOtherDetails" : { "EmployeeDesignation" : "HR", "EmployeeAge" : 27 } }
{ "_id" : 101, "EmployeeName" : "David", "EmployeeOtherDetails" : { "EmployeeDesignation" : "Tester", "EmployeeAge" : 26 } }

Truy vấn Aggregation: giữ EmployeeAge, thay EmployeeDesignation = "Developer" cho tất cả document:

> db.replaceValueDemo.aggregate([
  {
    "$project": {
      "_id": 1,
      "EmployeeOtherDetails": {
        "EmployeeAge": 1,
        "EmployeeDesignation": { $literal: "Developer" }
      }
    }
  }
]);

Kết quả:

{ "_id" : 100, "EmployeeOtherDetails" : { "EmployeeAge" : 27, "EmployeeDesignation" : "Developer" } }
{ "_id" : 101, "EmployeeOtherDetails" : { "EmployeeAge" : 26, "EmployeeDesignation" : "Developer" } }