Sau khi dùng $group trong aggregation, trường nhóm mặc định là _id. Có thể đổi tên bằng $project.
Ví dụ: Collection renameIdDemo:
> db.renameIdDemo.insertOne({"StudentName":"Chris"});
> db.renameIdDemo.insertOne({"StudentName":"Robert"});
> db.renameIdDemo.insertOne({"StudentName":"David"});
Aggregation với $project đổi tên _id thành mainId:
> db.renameIdDemo.aggregate([
{ $project: {
_id: 0,
mainId: "$_id",
count: 1,
sum: 1
}}
]);
Kết quả:
{ "mainId" : ObjectId("5c9a1760353decbc2fc927c5") }
{ "mainId" : ObjectId("5c9a1765353decbc2fc927c6") }
{ "mainId" : ObjectId("5c9a176b353decbc2fc927c7") }
Giải thích:
_id: 0: Loại bỏ trường _id gốc.mainId: "$_id": Tạo trường mớimainIdlấy giá trị từ_id.- Có thể thêm các trường tính toán khác (
count,sum).
Cách này áp dụng cho mọi pipeline aggregation cần đổi tên trường kết quả.