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

Gom nhóm document theo trường chung trong MongoDB

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" ] }