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

Chỉ hiển thị phần tử tìm thấy trong mảng MongoDB

Để chỉ hiển thị phần tử được tìm thấy trong mảng, sử dụng aggregate(). Tạo collection:

> db.demo204.insertOne(
   {
      "_id" : 101,
      "Name" : "Chris",
      "Age" : 23,
      "details" : [
         {
            "id" : "1001",
            "empId" : "John_1001",
            "salary" : "50000",
            "Technology" : "Java"
         },
         {
            "id" : "1002",
            "empId" : "John_1002"
         },
         {
            "id" : "1003",
            "empId" : "John_10003",
            "salary" : "60000",
            "Technology" : "MongoDB"
         }
      ]
   }
);
{ "acknowledged" : true, "insertedId" : 101 }

Hiển thị tất cả tài liệu:

> db.demo204.find();

Kết quả:

Truy vấn aggregation để chỉ lấy phần tử có id="1001" và hiển thị trường Technology:

> db.demo204.aggregate([
   { "$match": { "details.id": "1001" }},
   { "$unwind": "$details" },
   { "$match": { "details.id": "1001" }},
   { "$project": { "Technology": "$details.Technology", "_id": 0 }}
])

Kết quả - chỉ trả về Technology của phần tử khớp:

Quy trình: 1) $match lọc tài liệu chứa phần tử mục tiêu, 2) $unwind phân tách mảng, 3) $match lần 2 lọc chính xác phần tử, 4) $project chọn trường cần thiết.