Để lấy tên nhân viên theo mức lương cụ thể, dùng $in trên trường lương và projection chỉ lấy tên. Tạo collection:
> db.demo666.insertOne({"EmployeeName":"John","EmployeeSalary":25000});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea1c04824113ea5458c7d0d") }
> db.demo666.insertOne({"EmployeeName":"Chris","EmployeeSalary":35000});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea1c05524113ea5458c7d0e") }
> db.demo666.insertOne({"EmployeeName":"David","EmployeeSalary":65000});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea1c06024113ea5458c7d0f") }
> db.demo666.insertOne({"EmployeeName":"Carol","EmployeeSalary":40000});
{ "acknowledged" : true, "insertedId" : ObjectId("5ea1c06f24113ea5458c7d10") }
Hiển thị dữ liệu:
> db.demo666.find();
Kết quả:
Tìm lương 35000 HOẶC 40000, projection chỉ EmployeeName (ẩn _id và EmployeeSalary):
> db.demo666.find({"EmployeeSalary":{$in:[35000,40000]}},{_id:0,"EmployeeSalary":0});Kết quả chỉ tên 2 nhân viên:
Giải thích projection:
{_id: 0}- ẩn _id (mặc định luôn hiện trừ khi tắt){"EmployeeSalary": 0}- ẩn trường EmployeeSalary- Không thể mix include (1) và exclude (0) trừ _id
Mở rộng - Range query: Tìm lương từ 30000 đến 50000: {EmployeeSalary: {$gte: 30000, $lte: 50000}}. Kết hợp index trên EmployeeSalary để tối ưu.