Hướng dẫn what is projection mongodb? - dự kiến mongodb là gì?
Tài liệu về nhà → Hướng dẫn sử dụng MongoDB → MongoDB Manual Show
Trên trang này
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 1 trong đó 2 bằng 3:Hoạt động tương ứng với câu lệnh SQL sau:
Một phép chiếu có thể bao gồm rõ ràng một số trường bằng cách đặt 4 thành 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ó 6, 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:
Một phép chiếu có thể bao gồm rõ ràng một số trường bằng cách đặt 4 thành 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ó 6, 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:
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.Bạn có thể xóa trường 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.Bạn có thể xóa trường 0 trong phép chiếu, như trong ví dụ sau:Ghi chú Ngoại trừ trường
Trường 6,Trường 2,Trường 9 trong tài liệu db.COLLECTION_NAME.find({condition},{field1:1,field2:0,...})0. Trường 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 0.Ví dụ sau đây chỉ định một phép chiếu để loại trừ trường 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:
Trường 6,
Trường SELECT _id, item, status from inventory WHERE status = "A"2,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 đó:
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: https://docs.mongodb.com/manual/reference/operator/projection/positional/ https://docs.mongodb.com/manual/tutorial/project-fields-from-query-results/ |