Hướng dẫn select distinct mongodb compass - chọn la bàn mongodb riêng biệt

Tôi đang sử dụng la bàn MongoDB và không có vỏ Mongo. Tôi cần xây dựng một truy vấn bằng công cụ la bàn MongoDB để chọn các giá trị riêng biệt của trường "thể loại" từ bộ sưu tập của tôi.

Hướng dẫn select distinct mongodb compass - chọn la bàn mongodb riêng biệt

Đầu vào mẫu:

{"_id":{"$oid":"58c59c6a99d4ee0af9e0c34e"},"title":"Bateau-mouche sur la Seine","year":{"$numberInt":"1896"},"imdbId":"tt0000042","genre":["Documentary”,”Short”],"viewerRating":{"$numberDouble":"3.8"},"viewerVotes":{"$numberInt":"17"},"director":"Georges Mlis"}
{"_id":{"$oid":"58c59c6a99d4ee0af9e0c340"},"title":"Watering the Flowers","year":{"$numberInt":"1896"},"imdbId":"tt0000035","genre":["Short”],"viewerRating":{"$numberDouble":"5.3"},"viewerVotes":{"$numberInt":"33"},"director":"Georges M�li�s"}
{"_id":{"$oid":"58c59c6a99d4ee0af9e0c34a"},"title":"The Boxing Kangaroo","year":{"$numberInt":"1896"},"imdbId":"tt0000048","genre":["Short”],"viewerRating":{"$numberDouble":"5.2"},"viewerVotes":{"$numberInt":"48"},"director":"Birt Acres"}

Đầu ra mong đợi: phim tài liệu, ngắn: Documentary, Short

Phương thức trả về mảng sau của các giá trị

db.inventory.distinct( "item.sku" )

4 khác biệt:MongoDB Manual

{ collation: <document> }

0

Quan trọng

Trong hầu hết các trường hợp, giao dịch đa tài liệu phát sinh chi phí hiệu suất lớn hơn so với ghi tài liệu đơn lẻ và sự sẵn có của các giao dịch đa tài liệu không nên là một sự thay thế cho thiết kế lược đồ hiệu quả. Đối với nhiều kịch bản, mô hình dữ liệu được chuẩn hóa (tài liệu và mảng nhúng) sẽ tiếp tục tối ưu cho các trường hợp dữ liệu và sử dụng của bạn. Đó là, đối với nhiều kịch bản, mô hình hóa dữ liệu của bạn một cách thích hợp sẽ giảm thiểu nhu cầu cho các giao dịch đa tài liệu.

Để biết các cân nhắc sử dụng giao dịch bổ sung (như giới hạn thời gian chạy và giới hạn kích thước oplog), xem thêm các cân nhắc sản xuất.

{ collation: <document> }

1 method. This is not the documentation for database commands or language-specific drivers, such as Node.js.

Bắt đầu từ MongoDB 4.2, nếu khách hàng phát hành

{ collation: <document> }

7 ngắt kết nối trước khi hoạt động hoàn thành, MongoDB đánh dấu

{ collation: <document> }

7 để chấm dứt bằng cách sử dụng
{ "_id": 1, "dept": "A", "item": { "sku": "111", "color": "red" }, "sizes": [ "S", "M" ] }
{ "_id": 2, "dept": "A", "item": { "sku": "111", "color": "blue" }, "sizes": [ "M", "L" ] }
{ "_id": 3, "dept": "B", "item": { "sku": "222", "color": "blue" }, "sizes": "S" }
{ "_id": 4, "dept": "A", "item": { "sku": "333", "color": "black" }, "sizes": [ "S" ] }
9

Bắt đầu từ MongoDB 4.4, để chạy trên một thành viên tập hợp, các hoạt động

{ collation: <document> }

2 yêu cầu thành viên phải ở trạng thái

db.inventory.distinct( "dept" )

1 hoặc

db.inventory.distinct( "dept" )

2. Nếu thành viên ở một trạng thái khác, chẳng hạn như

db.inventory.distinct( "dept" )

3, các lỗi hoạt động.MongoDB driver documentation.

Trong các phiên bản trước, các hoạt động cũng chạy khi thành viên ở

db.inventory.distinct( "dept" )

3. Các hoạt động đợi cho đến khi thành viên chuyển sang

db.inventory.distinct( "dept" )

5

  • Các ví dụ sử dụng bộ sưu tập

    db.inventory.distinct( "dept" )

    6 có chứa các tài liệu sau:

  • Ví dụ sau trả về các giá trị riêng biệt cho trường

    db.inventory.distinct( "dept" )

    7 từ tất cả các tài liệu trong bộ sưu tập

    db.inventory.distinct( "dept" )

    6:

Phương thức trả về mảng sau của các giá trị

db.inventory.distinct( "dept" )

7 khác biệt:

Ví dụ sau trả về các giá trị riêng biệt cho trường

db.inventory.distinct( "item.sku" )

0, được nhúng trong trường

db.inventory.distinct( "item.sku" )

1, từ tất cả các tài liệu trong bộ sưu tập

db.inventory.distinct( "dept" )

6:

Phương thức trả về mảng sau của các giá trị

db.inventory.distinct( "item.sku" )

0 khác biệt:

Mẹo

Xem thêm:

{ collation: <document> }

4

Ký hiệu chấm cho thông tin về truy cập các trường trong các tài liệu nhúng

Ví dụ sau trả về các giá trị riêng biệt cho trường

db.inventory.distinct( "item.sku" )

4 từ tất cả các tài liệu trong bộ sưu tập

db.inventory.distinct( "dept" )

6:

{ collation: <document> }

5

Phương thức trả về mảng sau của các giá trị

db.inventory.distinct( "item.sku" )

4 khác biệt:

Để biết thông tin về các trường

db.inventory.distinct( "item.sku" )

7 và mảng, hãy xem phần Hành vi.

{ collation: <document> }

6

Phương thức trả về mảng sau của các giá trị

db.inventory.distinct( "item.sku" )

4 khác biệt:

Để biết thông tin về các trường

db.inventory.distinct( "item.sku" )

7 và mảng, hãy xem phần Hành vi.Options.

Ví dụ sau trả về các giá trị riêng biệt cho trường db.inventory.distinct( "item.sku" )0, được nhúng trong trường db.inventory.distinct( "item.sku" )1, từ các tài liệu có db.inventory.distinct( "dept" )7 bằng db.inventory.distinct( "sizes" )1:

Đối chiếu cho phép người dùng chỉ định các quy tắc cụ thể về ngôn ngữ để so sánh chuỗi, chẳng hạn như các quy tắc cho Lettercase và Dấu nhấn.

{ collation: <document> }

7 call.

Hướng dẫn select distinct mongodb compass - chọn la bàn mongodb riêng biệt

{ collation: <document> }

Bộ sưu tập

db.inventory.distinct( "sizes" )

3 có các tài liệu sau:

Mẹo

Xem thêm:

{ collation: <document> }

8

Phương thức trả về mảng sau của các giá trị

db.inventory.distinct( "item.sku" )

4 khác biệt:

Optional.

Để biết thông tin về các trường

db.inventory.distinct( "item.sku" )

7 và mảng, hãy xem phần Hành vi.

Mẹo

Xem thêm:

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}

Ký hiệu chấm cho thông tin về truy cập các trường trong các tài liệu nhúng

Nếu đối chiếu không xác định nhưng bộ sưu tập có đối chiếu mặc định (xem

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
0), thao tác sử dụng đối chiếu được chỉ định cho bộ sưu tập.

Nếu không có đối chiếu được chỉ định cho bộ sưu tập hoặc cho các hoạt động, MongoDB sử dụng so sánh nhị phân đơn giản được sử dụng trong các phiên bản trước để so sánh chuỗi.

Bạn không thể chỉ định nhiều đối chiếu cho một hoạt động. Ví dụ: bạn không thể chỉ định các đối chiếu khác nhau trên mỗi trường hoặc nếu thực hiện tìm thấy với một loại, bạn không thể sử dụng một đối chiếu cho tìm và một đối với loại khác.

Trong một cụm bị che khuất, lệnh

{ collation: <document> }

2 có thể trả lại các tài liệu mồ côi.

Nếu giá trị của

{ collation: <document> }

4 được chỉ định là một mảng,

{ collation: <document> }

7 coi mỗi phần tử của mảng là một giá trị riêng biệt.

{ collation: <document> }

7
considers each element of the array as a separate value.

Chẳng hạn, nếu một trường có giá trị của nó

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
4, thì

{ collation: <document> }

7 coi
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
6,
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
7 và
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
6 là các giá trị riêng biệt.

{ collation: <document> }

7
considers
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
6,
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
7, and
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
6 as separate values.

Ví dụ, xem Trả về các giá trị riêng biệt cho một trường mảng.Return Distinct Values for an Array Field.

Khi có thể, các hoạt động

{ collation: <document> }

7 có thể sử dụng các chỉ mục.

{ collation: <document> }

7
operations can use indexes.

Các chỉ mục cũng có thể bao gồm các hoạt động

{ collation: <document> }

7. Xem truy vấn được bảo hiểm để biết thêm thông tin về các truy vấn được bao gồm bởi các chỉ mục.

{ collation: <document> }

7
operations. See Covered Query for more information on queries covered by indexes.

Để thực hiện một hoạt động khác biệt trong một giao dịch:

  • Đối với các bộ sưu tập không có vỏ, bạn có thể sử dụng phương thức

    { collation: <document> }

    7/lệnh

    { collation: <document> }

    2 cũng như đường ống tổng hợp với giai đoạn
    { "_id": 1, "dept": "A", "item": { "sku": "111", "color": "red" }, "sizes": [ "S", "M" ] }
    { "_id": 2, "dept": "A", "item": { "sku": "111", "color": "blue" }, "sizes": [ "M", "L" ] }
    { "_id": 3, "dept": "B", "item": { "sku": "222", "color": "blue" }, "sizes": "S" }
    { "_id": 4, "dept": "A", "item": { "sku": "333", "color": "black" }, "sizes": [ "S" ] }
    3.

    { collation: <document> }

    7
    method/the

    { collation: <document> }

    2 command as well as the aggregation pipeline with the
    { "_id": 1, "dept": "A", "item": { "sku": "111", "color": "red" }, "sizes": [ "S", "M" ] }
    { "_id": 2, "dept": "A", "item": { "sku": "111", "color": "blue" }, "sizes": [ "M", "L" ] }
    { "_id": 3, "dept": "B", "item": { "sku": "222", "color": "blue" }, "sizes": "S" }
    { "_id": 4, "dept": "A", "item": { "sku": "333", "color": "black" }, "sizes": [ "S" ] }
    3 stage.

  • Đối với các bộ sưu tập Sharded, bạn không thể sử dụng phương thức

    { collation: <document> }

    7 hoặc lệnh

    { collation: <document> }

    2.

    { collation: <document> }

    7
    method or the

    { collation: <document> }

    2 command.

    Để tìm các giá trị riêng biệt cho một bộ sưu tập Sharded, hãy sử dụng đường ống tổng hợp với giai đoạn

    { "_id": 1, "dept": "A", "item": { "sku": "111", "color": "red" }, "sizes": [ "S", "M" ] }
    { "_id": 2, "dept": "A", "item": { "sku": "111", "color": "blue" }, "sizes": [ "M", "L" ] }
    { "_id": 3, "dept": "B", "item": { "sku": "222", "color": "blue" }, "sizes": "S" }
    { "_id": 4, "dept": "A", "item": { "sku": "333", "color": "black" }, "sizes": [ "S" ] }
    3 thay thế. Xem hoạt động khác biệt để biết chi tiết.

Quan trọng

Trong hầu hết các trường hợp, giao dịch đa tài liệu phát sinh chi phí hiệu suất lớn hơn so với ghi tài liệu đơn lẻ và sự sẵn có của các giao dịch đa tài liệu không nên là một sự thay thế cho thiết kế lược đồ hiệu quả. Đối với nhiều kịch bản, mô hình dữ liệu được chuẩn hóa (tài liệu và mảng nhúng) sẽ tiếp tục tối ưu cho các trường hợp dữ liệu và sử dụng của bạn. Đó là, đối với nhiều kịch bản, mô hình hóa dữ liệu của bạn một cách thích hợp sẽ giảm thiểu nhu cầu cho các giao dịch đa tài liệu.

Để biết các cân nhắc sử dụng giao dịch bổ sung (như giới hạn thời gian chạy và giới hạn kích thước oplog), xem thêm các cân nhắc sản xuất.

Bắt đầu từ MongoDB 4.2, nếu khách hàng phát hành

{ collation: <document> }

7 ngắt kết nối trước khi hoạt động hoàn thành, MongoDB đánh dấu

{ collation: <document> }

7 để chấm dứt bằng cách sử dụng
{ "_id": 1, "dept": "A", "item": { "sku": "111", "color": "red" }, "sizes": [ "S", "M" ] }
{ "_id": 2, "dept": "A", "item": { "sku": "111", "color": "blue" }, "sizes": [ "M", "L" ] }
{ "_id": 3, "dept": "B", "item": { "sku": "222", "color": "blue" }, "sizes": "S" }
{ "_id": 4, "dept": "A", "item": { "sku": "333", "color": "black" }, "sizes": [ "S" ] }
9

{ collation: <document> }

7
disconnects before the operation completes, MongoDB marks

{ collation: <document> }

7
for termination using
{ "_id": 1, "dept": "A", "item": { "sku": "111", "color": "red" }, "sizes": [ "S", "M" ] }
{ "_id": 2, "dept": "A", "item": { "sku": "111", "color": "blue" }, "sizes": [ "M", "L" ] }
{ "_id": 3, "dept": "B", "item": { "sku": "222", "color": "blue" }, "sizes": "S" }
{ "_id": 4, "dept": "A", "item": { "sku": "333", "color": "black" }, "sizes": [ "S" ] }
9

Bắt đầu từ MongoDB 4.4, để chạy trên một thành viên tập hợp, các hoạt động

{ collation: <document> }

2 yêu cầu thành viên phải ở trạng thái

db.inventory.distinct( "dept" )

1 hoặc

db.inventory.distinct( "dept" )

2. Nếu thành viên ở một trạng thái khác, chẳng hạn như

db.inventory.distinct( "dept" )

3, các lỗi hoạt động.

Trong các phiên bản trước, các hoạt động cũng chạy khi thành viên ở

db.inventory.distinct( "dept" )

3. Các hoạt động đợi cho đến khi thành viên chuyển sang

db.inventory.distinct( "dept" )

5

Các ví dụ sử dụng bộ sưu tập

db.inventory.distinct( "dept" )

6 có chứa các tài liệu sau:

{ "_id": 1, "dept": "A", "item": { "sku": "111", "color": "red" }, "sizes": [ "S", "M" ] }
{ "_id": 2, "dept": "A", "item": { "sku": "111", "color": "blue" }, "sizes": [ "M", "L" ] }
{ "_id": 3, "dept": "B", "item": { "sku": "222", "color": "blue" }, "sizes": "S" }
{ "_id": 4, "dept": "A", "item": { "sku": "333", "color": "black" }, "sizes": [ "S" ] }

Ví dụ sau trả về các giá trị riêng biệt cho trường

db.inventory.distinct( "dept" )

7 từ tất cả các tài liệu trong bộ sưu tập

db.inventory.distinct( "dept" )

6:

db.inventory.distinct( "dept" )

Phương thức trả về mảng sau của các giá trị

db.inventory.distinct( "dept" )

7 khác biệt:

Ví dụ sau trả về các giá trị riêng biệt cho trường

db.inventory.distinct( "item.sku" )

0, được nhúng trong trường

db.inventory.distinct( "item.sku" )

1, từ tất cả các tài liệu trong bộ sưu tập

db.inventory.distinct( "dept" )

6:

db.inventory.distinct( "item.sku" )

Phương thức trả về mảng sau của các giá trị

db.inventory.distinct( "item.sku" )

0 khác biệt:

Mẹo

Xem thêm:

Ký hiệu chấm cho thông tin về truy cập các trường trong các tài liệu nhúng

Ví dụ sau trả về các giá trị riêng biệt cho trường

db.inventory.distinct( "item.sku" )

4 từ tất cả các tài liệu trong bộ sưu tập

db.inventory.distinct( "dept" )

6:

db.inventory.distinct( "sizes" )

Phương thức trả về mảng sau của các giá trị

db.inventory.distinct( "item.sku" )

4 khác biệt:

Để biết thông tin về các trường

db.inventory.distinct( "item.sku" )

7 và mảng, hãy xem phần Hành vi.

db.inventory.distinct( "item.sku" )

7
and array fields, see the Behavior section.

Ví dụ sau trả về các giá trị riêng biệt cho trường

db.inventory.distinct( "item.sku" )

0, được nhúng trong trường

db.inventory.distinct( "item.sku" )

1, từ các tài liệu có

db.inventory.distinct( "dept" )

7 bằng

db.inventory.distinct( "sizes" )

1:

db.inventory.distinct( "item.sku", { dept: "A" } )

Phương thức trả về mảng sau của các giá trị

db.inventory.distinct( "item.sku" )

0 khác biệt:

Mẹo

Xem thêm:

{ _id: 1, category: "café", status: "A" }
{ _id: 2, category: "cafe", status: "a" }
{ _id: 3, category: "cafE", status: "a" }

Ký hiệu chấm cho thông tin về truy cập các trường trong các tài liệu nhúng

db.myColl.distinct( "category", {}, { collation: { locale: "fr", strength: 1 } } )

Ví dụ sau trả về các giá trị riêng biệt cho trường

db.inventory.distinct( "item.sku" )

4 từ tất cả các tài liệu trong bộ sưu tập

db.inventory.distinct( "dept" )

6: