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

3 cách để trả lại giá trị khác biệt trong MongoDB

Các giá trị khác biệt là những giá trị có các bản sao thừa bị loại bỏ. Nói cách khác, giá trị khác biệt là giá trị duy nhất.

Trong MongoDB, có một số cách để chúng ta có thể trả về các giá trị riêng biệt trong một truy vấn. Bài viết này trình bày 3 cách để trả về các giá trị khác biệt trong mongo shell.

Dữ liệu mẫu

Các ví dụ trên trang này sử dụng bộ sưu tập sau được gọi là pets :

{ "_id" : 1, "name" : "Wag", "type" : "Dog", "weight" : 20 }
{ "_id" : 2, "name" : "Bark", "type" : "Dog", "weight" : 10 }
{ "_id" : 3, "name" : "Meow", "type" : "Cat", "weight" : 7 }
{ "_id" : 4, "name" : "Scratch", "type" : "Cat", "weight" : 8 }
{ "_id" : 5, "name" : "Bruce", "type" : "Bat", "weight" : 3 }
{ "_id" : 6, "name" : "Fetch", "type" : "Dog", "weight" : 17 }
{ "_id" : 7, "name" : "Jake", "type" : "Dog", "weight" : 30 }

distinct() Phương pháp

Trong MongoDB, db.collection.distinct() phương thức tìm các giá trị riêng biệt cho một trường được chỉ định trên một tập hợp hoặc chế độ xem và trả về kết quả trong một mảng.

Ví dụ:

db.pets.distinct( "type" )

Kết quả:

[ "Bat", "Cat", "Dog" ]

Ba giá trị này là các giá trị riêng biệt cho loại type trong các tài liệu trên.

pets một phần chỉ đơn giản là đặt tên cho tập hợp để trả về các giá trị riêng biệt.

db.collection.distinct() phương thức là một phương thức trình bao bọc cho distinct lệnh (bên dưới).

distinct Lệnh

Trong MongoDB, distinct Lệnh tổng hợp tìm các giá trị riêng biệt cho một trường được chỉ định trên một tập hợp duy nhất.

Nó trả về một tài liệu có chứa một mảng các giá trị riêng biệt, cũng như một tài liệu được nhúng với thống kê truy vấn và kế hoạch truy vấn.

db.runCommand ( { distinct: "pets", key: "type" } )

Kết quả:

{ "values" : [ "Bat", "Cat", "Dog" ], "ok" : 1 }

Chúng tôi có thể thấy rằng các giá trị khác biệt giống nhau được trả về, ngoại trừ lần này chúng nằm trong một tài liệu cũng chứa thông tin khác.

$group Toán tử tổng hợp

Tùy thuộc vào nhu cầu của mình, bạn cũng có thể sử dụng $group toán tử tổng hợp để trả về các giá trị riêng biệt.

Ví dụ:

db.pets.aggregate( [ { $group : { _id : "$type" } } ] )

Kết quả:

{ "_id" : "Cat" }
{ "_id" : "Bat" }
{ "_id" : "Dog" }

Trong trường hợp này, các giá trị riêng biệt được trả về trong các tài liệu riêng biệt.

Cách tiếp cận này có thể hữu ích nếu bạn mong đợi kết quả của mình lớn. Nếu kết quả của bạn lớn hơn kích thước BSON tối đa (16 megabyte tại thời điểm viết bài), bạn có thể cần sử dụng phương pháp này.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Meteor:tải tệp từ máy khách lên bộ sưu tập Mongo so với hệ thống tệp và GridFS

  2. Cài đặt MongoDB trên Windows

  3. Đã nhúng MongoDB khi chạy thử nghiệm tích hợp

  4. Làm thế nào để in ra hơn 20 mục (tài liệu) trong trình bao của MongoDB?

  5. Lược đồ Mongoose chưa được đăng ký cho mô hình