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

MongoDB riêng biệt ()

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.

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ỏ. Giá trị khác biệt là giá trị duy nhất. Ví dụ:nếu bạn có 2 hoặc 3 tài liệu có cùng giá trị, thì distinct lệnh sẽ chỉ trả về một giá trị.

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

Ví dụ

Giả sử chúng ta có một bộ sưu tập có tên là pets với các tài liệu sau.

{ "_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 }

Chúng ta có thể sử dụng distinct() để trả về các loại vật nuôi riêng biệt.

db.pets.distinct( "type" )

Kết quả:

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

Vì vậy, mặc dù có bốn con chó và hai con mèo, mảng chỉ chứa một con. distinct() đã loại bỏ các giá trị trùng lặp.

Tài liệu gốc chỉ có một con dơi và do đó, distinct() phương pháp không thay đổi điều đó - không có giá trị trùng lặp nào để loại trừ.

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

Bạn có thể sử dụng ký hiệu dấu chấm để nhận các giá trị khác biệt từ một trường được nhúng

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

{ "_id" : 1, "product" : { "name" : "Shirt", "color" : "White" }, "sizes" : [ "S", "M", "L" ] }
{ "_id" : 2, "product" : { "name" : "Shirt", "color" : "Green" }, "sizes" : [ "S", "M", "XL" ] }
{ "_id" : 3, "product" : { "name" : "Shirt", "color" : "White" }, "sizes" : [ "S", "M", "L" ] }
{ "_id" : 4, "product" : { "name" : "Shorts", "color" : "Green" }, "sizes" : [ "M", "XS" ] }
{ "_id" : 5, "product" : { "name" : "Shorts", "color" : "Brown" }, "sizes" : [ "S", "M" ] }
{ "_id" : 6, "product" : { "name" : "Cap", "color" : "Purple" }, "sizes" : [ "M" ] }
{ "_id" : 7, "product" : { "name" : "Shoes", "color" : "Brown" }, "sizes" : [ "S", "M", "L" ] }
{ "_id" : 8, "product" : { "name" : "Shirt", "color" : "White" }, "sizes" : [ "M", "L", "XL" ] }
{ "_id" : 9, "product" : { "name" : "Cap", "color" : "Green" }, "sizes" : [ "M", "L" ] }

Chúng tôi có thể sử dụng truy vấn sau để trả về các giá trị khác biệt cho tên sản phẩm.

db.products.distinct(
    "product.name"
)

Kết quả:

[ "Cap", "Shirt", "Shoes", "Shorts" ]

Chúng tôi có thể làm điều tương tự đối với color trường.

db.products.distinct(
    "product.color"
)

Kết quả:

[ "Brown", "Green", "Purple", "White" ]

Nhận các giá trị riêng biệt từ một mảng

Đây là cách sử dụng distinct() để nhận các giá trị riêng biệt từ mảng trên.

db.products.distinct( "sizes" )

Kết quả:

[ "L", "M", "S", "XL", "XS" ]

Sử dụng distinct() với một Truy vấn

Bạn có thể cung cấp một truy vấn để chỉ định các tài liệu mà từ đó lấy các giá trị riêng biệt. Để thực hiện việc này, hãy thêm truy vấn sau trường.

Ví dụ:

db.products.distinct( "product.name", { sizes: "S" } )

Kết quả:

[ "Shirt", "Shoes", "Shorts" ]

Thông tin thêm

db.collection.distinct() phương thức cũng chấp nhận một collation , cho phép bạn chỉ định các quy tắc dành riêng cho ngôn ngữ để so sánh chuỗi, chẳng hạn như các quy tắc cho chữ cái viết hoa và dấu trọng âm.

Xem tài liệu MongoDB để biết thêm thông tin.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB $ nhân

  2. MongoDB $ ceil

  3. Tổng quan về Percona Backup cho MongoDB

  4. Mongoose hết hạn tài sản không hoạt động bình thường

  5. Truy vấn các phần tử mảng với Mongo