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

Làm thế nào để chỉ trả lại giá trị trong MongoDB

Khi bạn sử dụng các phương thức như find() hoặc findOne() trong MongoDB, theo mặc định, bạn nhận được toàn bộ tài liệu được trả về. Và nếu bạn sử dụng phép chiếu, bạn có thể trả về các cặp khóa / giá trị cụ thể.

Nhưng nếu bạn chỉ muốn giá trị thì sao?

Bạn có thể trích xuất giá trị của một trường bằng cách thêm tên của trường đó vào truy vấn của mình khi sử dụng findOne() .

Ví dụ

Giả sử chúng ta có một bộ sưu tập được gọi là products với các tài liệu sau:

 {"_id":1, "product":"Bat", "size":["S", "M", "L"]} {"_id":2, "product":"Mũ" , "kích thước":["S", "L", "XL"]} {"_id":3, "sản phẩm":"Cap", "kích thước":["M", "L"]}  

Nếu chúng tôi muốn trả lại sản phẩm của tài liệu đầu tiên, chúng tôi có thể làm như sau:

 db.products.findOne().product 

Kết quả:

 Con dơi 

Lưu ý rằng chúng tôi đã sử dụng findOne() phương pháp. Kỹ thuật này không hoạt động trên find() phương pháp. findOne() phương thức trả về một tài liệu duy nhất, trong khi find() phương thức chỉ trả về một con trỏ đến tài liệu.

Nếu chúng tôi muốn trả về mảng, chúng tôi có thể thực hiện điều này:

 db.products.findOne().sizes 

Kết quả:

 ["S", "M", "L"] 

Và chúng ta có thể nhận một giá trị mảng bằng cách tham chiếu chỉ mục của nó:

 db.products.findOne().sizes[0] 

Kết quả:

 S 

Mảng dựa trên 0 và vì vậy 0 tham chiếu đến phần tử đầu tiên trong mảng, 1 tham chiếu đến phần tử thứ hai, 2 thứ ba, v.v.

Tài liệu cụ thể

Theo mặc định, findOne() phương thức trả về tài liệu đầu tiên trong bộ sưu tập. Chúng ta có thể chọn một tài liệu khác bằng cách chỉ định chuyển một truy vấn làm đối số đầu tiên.

Tôi nói "đối số đầu tiên" bởi vì findOne() cũng chấp nhận một projection đối số như một đối số thứ hai tùy chọn.

 db.products.findOne({_id: 2}, {sizes: 1, _id: 0}).sizes 

Kết quả:

 [ "S", "L", "XL" ] 

Trong trường hợp này, tôi đã thêm đối số chiếu, nhưng nó không ảnh hưởng đến kết quả. Nhưng nó sẽ có hiệu lực nếu tôi chỉ định giá trị bằng 0. Điều đó sẽ dẫn đến không có gì được trả lại.

Tài liệu được nhúng

Bạn có thể sử dụng ký hiệu dấu chấm để trả về giá trị từ các tài liệu được nhúng

Tài liệu mẫu:

 {"_id":1, "name":"Wag", "details":{"type":"Dog", "weight":20}} 

Chúng tôi có thể làm như sau để trả về một giá trị từ tài liệu được nhúng:

 db.pets.findOne().details.type 

Kết quả:

 Con chó 


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Phân trang chậm trên hàng tấn bản ghi trong mongodb

  2. Mongo sắp xếp theo một điều kiện được tính toán

  3. MongoDB $ cond

  4. Làm cách nào để Benchmark MongoDB với YCSB?

  5. MongoDB $ toLong