MongoDB

Bài 14: MongoDB - Projection

Mặc định, khi truy vấn trong MongoDB (find()) 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 đó:
  • {condition}: là điều kiện tìm kiếm, nếu bạn để {} thì nó sẽ tìm tất cả document.
  • field1:1: 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ề)
  • field2:0: biểu thị field2 sẽ không được hiển thị trong kết quả trả về.
Ví dụ trong collection player 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à:
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 _id: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ả: