Tổng quan chương
Chương này giới thiệu cách thiết lập việc trả về các trường cụ thể trong các truy vấn MongoDB thay vì trả về toàn bộ dữ liệu trường.
Dữ liệu Kiểm thử
Chèn một vài mẫu dữ liệu vào bộ sưu tập kho hàng
db.inventory.insertMany( [
{ item: "sổ nhật ký", status: "A", size: { h: 14, w: 21, uom: "cm" }, instock: [ { warehouse: "A", qty: 5 } ] },
{ item: "sổ tay", status: "A", size: { h: 8.5, w: 11, uom: "in" }, instock: [ { warehouse: "C", qty: 5 } ] },
{ item: "giấy", status: "D", size: { h: 8.5, w: 11, uom: "in" }, instock: [ { warehouse: "A", qty: 60 } ] },
{ item: "lịch", status: "D", size: { h: 22.85, w: 30, uom: "cm" }, instock: [ { warehouse: "A", qty: 40 } ] },
{ item: "bưu thiếp", status: "A", size: { h: 10, w: 15.25, uom: "cm" }, instock: [ { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ] }
]);
Định dạng
{<trường>: 1 hoặc 0}
Giải thích:
- <trường> - tên trường
- 1 đại diện cho việc trả về trường, 0 đại diện cho việc loại trừ trường (tức là không trả về)
Mẹo: Sử dụng true/false thay vì 1 và 0 cũng được chấp nhận.
Trả về Các Trường Cụ Thể
Thiết lập các trường cần trả về thông qua tham số thứ hai của hàm find.
db.inventory.find( { status: "A" }, { item: 1, status: 1 } )
Giải thích:
- Các tài liệu mà trạng thái thỏa mãn A được truy vấn.
- Trả về các trường _id, item và status.
Mẹo: Trường _id được trả về mặc định.
Tương đương SQL:
SELECT item, status from inventory WHERE status = "A"
Loại Trừ Các Trường Cụ Thể
db.inventory.find( { status: "A" }, { status: 0, instock: 0 } )
Giải thích:
- Các tài liệu mà trạng thái thỏa mãn A được truy vấn.
- Trả về toàn bộ dữ liệu ngoại trừ các trường item và status.
Trả về Các Trường Cụ Thể trong Các Tài Liệu Lồng Nhau
db.inventory.find(
{ status: "A" },
{ item: 1, status: 1, "size.uom": 1 }
)
Giải thích:
- size.uom đại diện cho việc trả về trường uom dưới size.