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

Toán tử $unwind trong MongoDB là gì?

Toán tử $unwind trong Aggregation Pipeline "phẳng hóa" mảng: tạo document riêng cho mỗi phần tử mảng, giữ nguyên các trường khác.

Ví dụ minh họa

Tạo collection unwindOperatorDemo:

> db.unwindOperatorDemo.insertOne({"TenSinhVien": "Larry", "TuoiSinhVien": 23, "MonHoc": ["C", "C++", "Java", "MongoDB"]});

Document gốc: 1 document, mảng MonHoc 4 phần tử.

Áp dụng $unwind

> db.unwindOperatorDemo.aggregate([
  {$project: {TenSinhVien: 1, TuoiSinhVien: 1, MonHoc: 1}},
  {$unwind: "$MonHoc"}
]).pretty();

Kết quả: 4 document, mỗi document có 1 môn học:

{ "TenSinhVien": "Larry", "TuoiSinhVien": 23, "MonHoc": "C" }
{ "TenSinhVien": "Larry", "TuoiSinhVien": 23, "MonHoc": "C++" }
{ "TenSinhVien": "Larry", "TuoiSinhVien": 23, "MonHoc": "Java" }
{ "TenSinhVien": "Larry", "TuoiSinhVien": 23, "MonHoc": "MongoDB" }

Tùy chọn nâng cao

  • preserveNullAndEmptyArrays: true - Giữ document nếu mảng rỗng/null
  • includeArrayIndex: "tenTruong" - Thêm trường chứa chỉ mục gốc

Ứng dụng: Phân tích dữ liệu mảng, join với collection khác, đếm phần tử, lọc phần tử mảng.