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

Gộp mảng tài liệu trong MongoDB với aggregation

Sử dụng aggregate() với $group và $push để gộp mảng. Tạo collection:

> db.demo64.insertOne({"Subjects":["MySQL","MongoDB","Java"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e28762bcfb11e5c34d89936") }
> db.demo64.insertOne({"Subjects":["Oracle","Spring","Python"]});
{ "acknowledged" : true, "insertedId" : ObjectId("5e28763fcfb11e5c34d89937") }

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

> db.demo64.find();

Aggregation gộp tất cả mảng Subjects thành một mảng lồng nhau:

> db.demo64.aggregate([
   { "$group": {
      "_id": null,
      "Subjects": { "$push": "$Subjects" }
   }},
   { "$project": { "_id": 0 }}
]);

Kết quả - mảng chứa 2 mảng con:

Lưu ý: $push giữ nguyên cấu trúc mảng con. Nếu muốn gộp phẳng (flatten), dùng $unwind trước rồi $push, hoặc dùng $concatArrays (MongoDB 4.4+).