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

Đổi tên trường _id sau aggregation group trong MongoDB

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ới mainId lấ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ả.