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 MongoDBMongoDB 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.

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.

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

    SELECT _id, item, status from inventory WHERE status = "A"

    2 và

    SELECT item, status from inventory WHERE status = "A"

    3 trong các tài liệu phù hợp:

  • 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

    SELECT _id, item, status from inventory WHERE status = "A"

    5 trong tài liệu chiếu.

  • 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

    SELECT _id, item, status from inventory WHERE status = "A"

    2 và

    SELECT item, status from inventory WHERE status = "A"

    3 trong các tài liệu phù hợp:

  • 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

    SELECT _id, item, status from inventory WHERE status = "A"

    5 trong tài liệu chiếu.

  • 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,

Ví dụ 2:

  • Hiển thị name và ẩn _id của các player có age = 25
  • Okay, Done!
  • This entry is part 13 of 24 in the series MongoDB
  • MongoDB là gì? Các khái niệm trong MongoDB
  • Hướng dẫn cài đặt, cấu hình MongoDB trên Windows 10
  • Cài đặt và sử dụng Robo 3T [RoboMongo] trên Windows
  • Hướng dẫn cài đặt MongoDB trên Linux [Ubuntu 16.04]
  • Hướng dẫn MongoDB – Tạo database trong MongoDB
  • Hướng dẫn MongoDB – Xóa, DROP database trong MongoDB
  • Tạo bảng, collections trong MongoDB [Tạo bằng dòng lệnh, Robo3t]
  • Xóa bảng, collections trong MongoDB [Xóa bằng lệnh/ Robo3T]
  • Insert document, bản ghi trong MongoDB [Insert bằng lệnh, Robo3T]
  • Projection trong MongoDB [SELECT field/column trong MongoDB]
  • Sắp xếp trong MongoDB[orderBy, sorting[] trong MongoDB]
  • Ưu nhược điểm của MongoDB, khi nào nên dùng MongoDB
  • Xóa cột, field, trường của collections trong MongoDB [$unset]
  • Kiểm tra null, check tồn tại trong MongoDB với $exists
  • Đổi tên field trong MongoDB với $rename
  • Tạo user/roles, phân quyền người dùng trên MongoDB
  • Các loại roles, vai trò, quyền trong MongoDB.
  • Đăng nhập mongodb với username và password [database mongo]
  • Tạo Replica Set trong MongoDB, Ví dụ Replica Set MongoDB
  • Replication, Replica Set trong MongoDB là gì?
  • Phân trang trong MongoDB [skip[], limit[] paging trong MongoDB]

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/

Bài Viết Liên Quan

Chủ Đề