MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

MongoDB - Truy vấn chiếu

Một truy vấn chiếu là một truy vấn trong đó bạn chỉ định trường nào sẽ được trả về.

Trong MongoDB, khi bạn truy vấn một tập hợp bằng db.collection.find() , bạn có thể chỉ định trường nào bạn muốn trả về.

Bạn có thể thực hiện việc này bằng cách đưa tên trường vào truy vấn của mình và thêm 1 hoặc 0 bên cạnh chúng, để chỉ định xem nó có nên được trả lại hay không. Đây là phép chiếu tham số. Tham số chiếu của 1 sẽ hiển thị trường và một 0 sẽ ẩn nó.

Ví dụ

Trước tiên, hãy thực hiện một truy vấn không có phép chiếu (để chúng tôi có thể xem có bao nhiêu trường được trả về):

Không có phép chiếu

db.musicians.find( { instrument: "Vocals"} )

Kết quả:

{ "_id" : 1, "name" : "Ian Gillan", "instrument" : "Vocals" }
{ "_id" : 6, "name" : "Jeff Martin", "instrument" : "Vocals", "born" : 1969 }

Với phép chiếu

Bây giờ, hãy sử dụng phép chiếu để chỉ hiển thị tên lĩnh vực:

db.musicians.find( { instrument: "Vocals" }, { name: 1 } )

Kết quả:

{ "_id" : 1, "name" : "Ian Gillan" }
{ "_id" : 6, "name" : "Jeff Martin" }

Bạn sẽ nhận thấy rằng _id trường được tự động đưa vào, ngay cả khi bạn không chỉ định nó. Bạn có thể loại trừ trường này bằng cách sử dụng 0 chống lại nó:

db.musicians.find( { instrument: "Vocals" }, { _id: 0, name: 1 } )

Kết quả:

{ "name" : "Ian Gillan" }
{ "name" : "Jeff Martin" }

Kết hợp các loại bao gồm và loại trừ

Bạn không thể kết hợp 1 s và 0 s (ngoại trừ _id đồng ruộng). Nếu bạn cố gắng kết hợp các loại bao gồm và loại trừ, như sau:

db.musicians.find( { instrument: "Vocals" }, { name: 1, born: 0 } )

Bạn sẽ gặp phải lỗi này:

Error: error: {
	"waitedMS" : NumberLong(0),
	"ok" : 0,
	"errmsg" : "Projection cannot have a mix of inclusion and exclusion.",
	"code" : 2
}

Vì vậy, đối với bạn, hãy bao gồm các trường hoặc loại trừ chúng - không phải cả hai.

Dưới đây là một ví dụ về việc chỉ định các trường bằng cách loại trừ:

db.musicians.find( { instrument: "Vocals" }, { _id: 0, instrument: 0 } )

Kết quả:

{ "name" : "Ian Gillan" }
{ "name" : "Jeff Martin", "born" : 1969 }

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cập nhật hàng loạt tài liệu trong MongoDB

  2. Nhà điều hành đường ống tổng hợp MongoDB $ max

  3. Làm cách nào để thay đổi thứ tự của mảng với MongoDB?

  4. Làm cách nào để trả về kết quả Mongoose từ phương thức find?

  5. MongoDB elemmatch nhiều phần tử trong mảng