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

Truy vấn lọc mảng tài liệu nhúng (embedded documents) 3 cấp trong MongoDB

Sử dụng $unwind nhiều lần và $match

Để truy vấn sâu vào mảng lồng nhau nhiều cấp, cần $unwind từng cấp rồi $match điều kiện.

Dữ liệu mẫu (3 cấp lồng nhau)

> db.demo736.insertMany([
  {
    _id: "101",
    details1: [{ details2: [{ details3: { Name: "John" } }] }]
  },
  {
    _id: "102",
    details1: [{ details2: [{ details3: { Name: "Robert" } }] }]
  }
]);

Truy vấn lọc Name = "Robert"

db.demo736.aggregate([
  { $unwind: "$details1" },
  { $unwind: "$details1.details2" },
  { $match: { "details1.details2.details3.Name": "Robert" } },
  { $project: { _id: 0, Name: "$details1.details2.details3" } }
]);

Kết quả

{ "Name": { "Name": "Robert" } }

Kỹ thuật này áp dụng cho cấu trúc dữ liệu lồng nhau tùy ý độ sâu.