Tài liệu về nhà → Hướng dẫn sử dụng MongoDB → MongoDB Manual
Trên trang này
- Trả lại tất cả các trường trong các tài liệu phù hợp
- Trả về các trường được chỉ định và trường
_id
chỉ - Triệt tiêu trường
_id
- Trả lại tất cả trừ các trường bị loại trừ
- Trả về các trường cụ thể trong các tài liệu nhúng
- Triệt tiêu các trường cụ thể trong các tài liệu nhúng
- Chiếu trên các tài liệu nhúng trong một mảng
- Các yếu tố mảng cụ thể của dự án trong mảng được trả về
- Cân nhắc bổ sung
Sử dụng menu chọn ngôn ngữ của bạn ở phía trên bên phải để đặt ngôn ngữ của các ví dụ sau.Select your language drop-down menu in the upper-right to set the language of the following examples.
Theo mặc định, các truy vấn trong MongoDB trả về tất cả các trường trong các tài liệu phù hợp. Để hạn chế lượng dữ liệu mà MongoDB gửi đến các ứng dụng, bạn có thể bao gồm một tài liệu dự báo để chỉ định hoặc hạn chế các trường để trả về.
Ví dụ sau trả về tất cả các trường từ tất cả các tài liệu trong bộ sưu tập
SELECT _id, item, status from inventory WHERE status = "A"
1 trong đó SELECT _id, item, status from inventory WHERE status = "A"
2 bằng SELECT _id, item, status from inventory WHERE status = "A"
3:Hoạt động tương ứng với câu lệnh SQL sau:
SELECT * from inventory WHERE status = "A"
Một phép chiếu có thể bao gồm rõ ràng một số trường bằng cách đặt
SELECT _id, item, status from inventory WHERE status = "A"
4 thành SELECT _id, item, status from inventory WHERE status = "A"
5 trong tài liệu chiếu. Hoạt động sau trả về tất cả các tài liệu phù hợp với truy vấn. Trong kết quả được đặt, chỉ có SELECT _id, item, status from inventory WHERE status = "A"
6, SELECT _id, item, status from inventory WHERE status = "A"
2 và theo mặc định, các trường _id
trả về trong các tài liệu phù hợp.Hoạt động tương ứng với câu lệnh SQL sau:
SELECT _id, item, status from inventory WHERE status = "A"
Một phép chiếu có thể bao gồm rõ ràng một số trường bằng cách đặt
SELECT _id, item, status from inventory WHERE status = "A"
4 thành SELECT _id, item, status from inventory WHERE status = "A"
5 trong tài liệu chiếu. Hoạt động sau trả về tất cả các tài liệu phù hợp với truy vấn. Trong kết quả được đặt, chỉ có SELECT _id, item, status from inventory WHERE status = "A"
6, SELECT _id, item, status from inventory WHERE status = "A"
2 và theo mặc định, các trường _id
trả về trong các tài liệu phù hợp.Hoạt động tương ứng với câu lệnh SQL sau:
SELECT item, status from inventory WHERE status = "A"
Một phép chiếu có thể bao gồm rõ ràng một số trường bằng cách đặt SELECT _id, item, status from inventory WHERE status = "A"
4 thành SELECT _id, item, status from inventory WHERE status = "A"
5 trong tài liệu chiếu. Hoạt động sau trả về tất cả các tài liệu phù hợp với truy vấn. Trong kết quả được đặt, chỉ có SELECT _id, item, status from inventory WHERE status = "A"
6, SELECT _id, item, status from inventory WHERE status = "A"
2 và theo mặc định, các trường _id
trả về trong các tài liệu phù hợp.
SELECT _id, item, status from inventory WHERE status = "A"
SELECT _id, item, status from inventory WHERE status = "A"
SELECT _id, item, status from inventory WHERE status = "A"
SELECT _id, item, status from inventory WHERE status = "A"
Bạn có thể xóa trường _id
khỏi kết quả bằng cách đặt nó thành
SELECT item, status from inventory WHERE status = "A"
0 trong phép chiếu, như trong ví dụ sau:Ghi chú
Một phép chiếu có thể bao gồm rõ ràng một số trường bằng cách đặt SELECT _id, item, status from inventory WHERE status = "A"
4 thành SELECT _id, item, status from inventory WHERE status = "A"
5 trong tài liệu chiếu. Hoạt động sau trả về tất cả các tài liệu phù hợp với truy vấn. Trong kết quả được đặt, chỉ có SELECT _id, item, status from inventory WHERE status = "A"
6, SELECT _id, item, status from inventory WHERE status = "A"
2 và theo mặc định, các trường _id
trả về trong các tài liệu phù hợp.
SELECT _id, item, status from inventory WHERE status = "A"
SELECT _id, item, status from inventory WHERE status = "A"
SELECT _id, item, status from inventory WHERE status = "A"
SELECT _id, item, status from inventory WHERE status = "A"
Bạn có thể xóa trường _id
khỏi kết quả bằng cách đặt nó thành
SELECT item, status from inventory WHERE status = "A"
0 trong phép chiếu, như trong ví dụ sau:Ghi chú
Ngoại trừ trường _id
, bạn không thể kết hợp các câu lệnh bao gồm và loại trừ trong các tài liệu chiếu.
Thay vì liệt kê các trường để trả về trong tài liệu phù hợp, bạn có thể sử dụng một phép chiếu để loại trừ các trường cụ thể. Ví dụ sau đây trả về tất cả các trường ngoại trừ các trường
2 vàSELECT _id, item, status from inventory WHERE status = "A"
3 trong các tài liệu phù hợp:SELECT item, status from inventory WHERE status = "A"
Bạn có thể trả về các trường cụ thể trong một tài liệu nhúng. Sử dụng ký hiệu dấu chấm để tham khảo trường nhúng và đặt thành
5 trong tài liệu chiếu.SELECT _id, item, status from inventory WHERE status = "A"
Ví dụ sau trả về:
Trường
_id
[được trả về theo mặc định],
Trường
SELECT _id, item, status from inventory WHERE status = "A"
6,Trường
SELECT _id, item, status from inventory WHERE status = "A"
2,Trường
SELECT item, status from inventory WHERE status = "A"
9 trong tài liệu db.COLLECTION_NAME.find[{condition},{field1:1,field2:0,...}]0.
Trường
SELECT item, status from inventory WHERE status = "A"
9 vẫn được nhúng trong tài liệu db.COLLECTION_NAME.find[{condition},{field1:1,field2:0,...}]0.
Bắt đầu từ MongoDB 4.4, bạn cũng có thể chỉ định các trường được nhúng bằng mẫu lồng nhau, ví dụ:
db.COLLECTION_NAME.find[{condition},{field1:1,field2:0,...}]3.
Bạn có thể ngăn chặn các trường cụ thể trong một tài liệu nhúng. Sử dụng ký hiệu dấu chấm để tham khảo trường nhúng trong tài liệu chiếu và được đặt thành
SELECT item, status from inventory WHERE status = "A"
0.Ví dụ sau đây chỉ định một phép chiếu để loại trừ trường
SELECT item, status from inventory WHERE status = "A"
9 bên trong tài liệu db.COLLECTION_NAME.find[{condition},{field1:1,field2:0,...}]0. Tất cả các trường khác được trả về trong các tài liệu phù hợp:
Thay vì liệt kê các trường để trả về trong tài liệu phù hợp, bạn có thể sử dụng một phép chiếu để loại trừ các trường cụ thể. Ví dụ sau đây trả về tất cả các trường ngoại trừ các trường
2 vàSELECT _id, item, status from inventory WHERE status = "A"
3 trong các tài liệu phù hợp:SELECT item, status from inventory WHERE status = "A"
Bạn có thể trả về các trường cụ thể trong một tài liệu nhúng. Sử dụng ký hiệu dấu chấm để tham khảo trường nhúng và đặt thành
5 trong tài liệu chiếu.SELECT _id, item, status from inventory WHERE status = "A"
Ví dụ sau trả về:
Trường
_id
[được trả về theo mặc định],
Trường
SELECT _id, item, status from inventory WHERE status = "A"
6,
Trường SELECT _id, item, status from inventory WHERE status = "A"
2,
SELECT _id, item, status from inventory WHERE status = "A"
Ví dụ 2:
Projection trong MongoDB [SELECT field/column trong MongoDB]
Mặc định, khi truy vấn trong MongoDB [
{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25}, {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25}, {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18}, {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30}, {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},3] kết quả trả về sẽ gồm tất cả các field trong document. Để giới hạn số lượng dữ liệu mà MongoDB gửi tới ứng dụng, bạn có thể sử dụng projection để chỉ rõ những field nào được trả về, những field nào không được trả về khi truy vấn.
Cú pháp:
db.COLLECTION_NAME.find[{condition},{field1:1,field2:0,...}]
Trong đó:
{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25}, {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25}, {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18}, {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30}, {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},
4: là điều kiện tìm kiếm, nếu bạn để{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25}, {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25}, {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18}, {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30}, {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},
5 thì nó sẽ tìm tất cả document.{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25}, {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25}, {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18}, {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30}, {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},
6: biểu thị field1 sẽ được hiển thị trong kết quả trả về. [Mặc định trường_id
luôn trược trả về]{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25}, {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25}, {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18}, {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30}, {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},
8: biểu thị field2 sẽ không được hiển thị trong kết quả trả về.
Ví dụ trong collection
{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25}, {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25}, {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18}, {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30}, {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},9 mình có 5 bản ghi như sau:
{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25}, {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25}, {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18}, {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30}, {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},
Ví dụ 1: hiển thị name của tất cả các document thì câu lệnh sẽ là: hiển thị name của tất cả các document thì câu lệnh sẽ là:
db.player.find[{},{'name':1}]
Câu SQL tương ứng:
SELECT _id, name FROM player
Kết quả:
[Mặc định trường _id sẽ được hiển thị, nếu không muốn hiển thị thì bạn dùng
db.player.find[{},{'name':1}]0]
Ví dụ 2:
Hiển thị name và ẩn _id của các player có age = 25
db.player.find[{'age':25},{'name':1, '_id':0}]
Câu SQL tương ứng:
SELECT name FROM player WHERE age = 25
Kết quả:
[Mặc định trường _id sẽ được hiển thị, nếu không muốn hiển thị thì bạn dùng
db.player.find[{},{'name':1}]0]
References:
//docs.mongodb.com/manual/reference/operator/projection/positional/
//docs.mongodb.com/manual/tutorial/project-fields-from-query-results/