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

Cách lấy mảng từ collection MongoDB bằng Aggregation Framework

Bạn có thể sử dụng Aggregation Framework. Tạo collection với document lồng nhau:

> db.getArrayDemo.insertOne(
    {
      "CustomerId": 101,
      "CustomerDetails": [
        {
          "CustomerName": "Larry",
          "CustomerFriendDetails": [
            { "CustomerFriendName": "Sam" },
            { "CustomerFriendName": "Robert" }
          ]
        },
        {
          "CustomerName": "Chris",
          "CustomerFriendDetails": [
            { "CustomerFriendName": "David" },
            { "CustomerFriendName": "Carol" }
          ]
        }
      ]
    }
); { "acknowledged" : true, "insertedId" : ObjectId("5cda4949b50a6c6dd317adb7") }

Hiển thị document:

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

Kết quả:

{ "_id" : ObjectId("5cda4949b50a6c6dd317adb7"), "CustomerId" : 101, "CustomerDetails" : [ { "CustomerName" : "Larry", "CustomerFriendDetails" : [ { "CustomerFriendName" : "Sam" }, { "CustomerFriendName" : "Robert" } ] }, { "CustomerName" : "Chris", "CustomerFriendDetails" : [ { "CustomerFriendName" : "David" }, { "CustomerFriendName" : "Carol" } ] } ] }

Truy vấn Aggregation để lấy mảng tên bạn bè:

> db.getArrayDemo.aggregate([
    { "$unwind": "$CustomerDetails" },
    { "$unwind": "$CustomerDetails.CustomerFriendDetails" },
    {
      "$group": {
        "_id": null,
        "CustomerFriendDetails": { "$push": "$CustomerDetails.CustomerFriendDetails.CustomerFriendName" }
      }
    }
]);

Kết quả (mảng gộp tất cả tên bạn bè):

{ "_id" : null, "CustomerFriendDetails" : [ "Sam", "Robert", "David", "Carol" ] }