Để 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.