Sử dụng toán tử $addToSet trong Aggregation Framework để gom các giá trị trùng lặp thành mảng unique.
Tạo collection với document:
> db.findDocumentWithCommonFieldsDemo.insertOne({ "UserId": 1, "UserName": "Carol" });
{ "acknowledged" : true, "insertedId" : ObjectId("5cdf8ebebf3115999ed51200") }
> db.findDocumentWithCommonFieldsDemo.insertOne({ "UserId": 2, "UserName": "David" });
{ "acknowledged" : true, "insertedId" : ObjectId("5cdf8ebebf3115999ed51201") }
> db.findDocumentWithCommonFieldsDemo.insertOne({ "UserId": 1, "UserName": "Sam" });
{ "acknowledged" : true, "insertedId" : ObjectId("5cdf8ebebf3115999ed51202") }
Hiển thị tất cả document:
> db.findDocumentWithCommonFieldsDemo.find();
Kết quả:
{ "_id" : ObjectId("5cdf8ebebf3115999ed51200"), "UserId" : 1, "UserName" : "Carol" }
{ "_id" : ObjectId("5cdf8ebebf3115999ed51201"), "UserId" : 2, "UserName" : "David" }
{ "_id" : ObjectId("5cdf8ebebf3115999ed51202"), "UserId" : 1, "UserName" : "Sam" }
Truy vấn Aggregation gom nhóm theo UserId, gom UserName vào mảng unique:
> db.findDocumentWithCommonFieldsDemo.aggregate({ $group: { _id: "$UserId", "UserDetails": { $addToSet: "$UserName" } } });
Kết quả:
{ "_id" : 2, "UserDetails" : [ "David" ] }
{ "_id" : 1, "UserDetails" : [ "Sam", "Carol" ] }