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

Hiển thị chỉ tên khóa (keys) từ tài liệu nhúng lồng nhau trong MongoDB

Sử dụng $reduce, $objectToArray, $map để trích xuất keys

Pipeline aggregation phức tạp để lấy tất cả tên trường (keys) từ các đối tượng trong mảng lồng nhau.

Dữ liệu mẫu

> db.demo740.insertOne({
  details: [
    { Name: "Chris", Age: 21, CountryName: "US" },
    { Name: "Bob", Age: 20, CountryName: "UK", isMarried: true }
  ]
});

Truy vấn Aggregation

db.demo740.aggregate([
  {
    $project: {
      ListKeys: {
        $reduce: {
          input: "$details",
          initialValue: [],
          in: {
            $concatArrays: [
              "$$value",
              {
                $map: {
                  input: { $objectToArray: "$$this" },
                  in: "$$this.k"
                }
              }
            ]
          }
        }
      }
    }
  }
]).pretty()

Kết quả

{ "_id": ObjectId("5ead700c57bb72a10bcf066d"), "ListKeys": [ "Name", "Age", "CountryName", "Name", "Age", "CountryName", "isMarried" ] }

Mảng ListKeys chứa tên tất cả các trường xuất hiện trong các đối tượng con, bao gồm cả trùng lặp.