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

Loại bỏ trường _id khỏi kết quả truy vấn MongoDB (Projection)

Để không trả về trường _id trong kết quả find(), sử dụng projection với { _id: 0 } (hoặc false).

Cú pháp

db.collection.find({  }, { _id: 0 }).pretty();

Hoặc trong PyMongo (Python driver): collection.find({}, {"_id": False}).

Ví dụ minh họa

Tạo collection removingidElementDemo:

> db.removingidElementDemo.insertOne({ "UserName": "John", "UserAge": 21 });
> db.removingidElementDemo.insertOne({ "UserName": "Carol", "UserAge": 24 });
> db.removingidElementDemo.insertOne({ "UserName": "David", "UserAge": 22 });
> db.removingidElementDemo.insertOne({ "UserName": "Mike", "UserAge": 26 });
> db.removingidElementDemo.insertOne({ "UserName": "Chris", "UserAge": 20 });

Hiển thị có _id:

> db.removingidElementDemo.find().pretty();

Kết quả:

{ "_id" : ObjectId("..."), "UserName" : "John", "UserAge" : 21 }
{ "_id" : ObjectId("..."), "UserName" : "Carol", "UserAge" : 24 }
{ "_id" : ObjectId("..."), "UserName" : "David", "UserAge" : 22 }
{ "_id" : ObjectId("..."), "UserName" : "Mike", "UserAge" : 26 }
{ "_id" : ObjectId("..."), "UserName" : "Chris", "UserAge" : 20 }

Truy vấn loại bỏ _id

> db.removingidElementDemo.find({}, { _id: false }).pretty();

Kết quả (không có _id):

{ "UserName" : "John", "UserAge" : 21 }
{ "UserName" : "Carol", "UserAge" : 24 }
{ "UserName" : "David", "UserAge" : 22 }
{ "UserName" : "Mike", "UserAge" : 26 }
{ "UserName" : "Chris", "UserAge" : 20 }

Kết hợp lấy field cụ thể và ẩn _id

db.collection.find({}, { _id: 0, UserName: 1 }); // Chỉ lấy UserName

Trong Aggregation

db.collection.aggregate([
    { $project: { _id: 0, UserName: 1, UserAge: 1 } }
]);

Lưu ý

  • Chỉ ảnh hưởng đến **kết quả trả về**, không xóa _id khỏi document trong database.
  • _id là khóa chính, không thể xóa khỏi document (chỉ ẩn khi truy xuất).
  • Trong MongoDB Compass/GUI: Bật/tắt hiển thị _id ở cột tùy chọn.