Hướng dẫn how do i query unique records in mongodb? - làm cách nào để truy vấn các bản ghi duy nhất trong mongodb?

Tài liệu về nhà → Hướng dẫn sử dụng MongoDBMongoDB Manual

db.collection.distinct[field, query, options]

Quan trọng

Phương pháp Mongosh

Trang này ghi lại một phương thức

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
0. Đây không phải là tài liệu cho các lệnh cơ sở dữ liệu hoặc trình điều khiển dành riêng cho ngôn ngữ, chẳng hạn như Node.js. Để sử dụng lệnh cơ sở dữ liệu, hãy xem lệnh
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
1.
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
0
method. This is not the documentation for database commands or language-specific drivers, such as Node.js. To use the database command, see the
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
1 command.

Đối với trình điều khiển API MongoDB, hãy tham khảo tài liệu trình điều khiển MongoDB dành riêng cho ngôn ngữ.MongoDB driver documentation.

Đối với tài liệu Shell Legacy

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
2, hãy tham khảo tài liệu để phát hành máy chủ MongoDB tương ứng:

  • Mongo Shell v4.4

  • Mongo Shell v4.2

Tìm các giá trị riêng biệt cho một trường được chỉ định trên một bộ sưu tập hoặc chế độ xem và trả về kết quả trong một mảng.

Phương thức này lấy các tham số sau:

Tham số

Loại hình

Sự mô tả

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

sợi dây

Trường để trả về các giá trị riêng biệt.

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

tài liệu

Một truy vấn chỉ định các tài liệu để lấy các giá trị riêng biệt.

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

tài liệu

Một truy vấn chỉ định các tài liệu để lấy các giá trị riêng biệt.Options.

Không bắt buộc. Một tài liệu chỉ định các tùy chọn. Xem các tùy chọn.

Ghi chú

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

{ collation: }

Sơ đồ sau đây cho thấy một cuộc gọi

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
6 ví dụ.

Loại hình

Sự mô tả

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

tài liệu

Optional.

Một truy vấn chỉ định các tài liệu để lấy các giá trị riêng biệt.

Không bắt buộc. Một tài liệu chỉ định các tùy chọn. Xem các tùy chọn.

Ghi chú

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

Sơ đồ sau đây cho thấy một cuộc gọi

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
6 ví dụ.

Đồng ruộng

Chỉ định đối chiếu để sử dụng cho hoạt động.

Đố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.

Tùy chọn đối chiếu có cú pháp sau:

Khi chỉ định đối chiếu, trường

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
8 là bắt buộc; Tất cả các trường đối chiếu khác là tùy chọn. Để biết mô tả của các trường, xem tài liệu đối chiếu.
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
6
considers each element of the array as a separate value.

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

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
9], thao tác sử dụng đối chiếu được chỉ định cho bộ sưu tập.
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
6
considers
{ "_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" ] }
5,
{ "_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" ] }
6, and
{ "_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" ] }
5 as separate values.

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.Return Distinct Values for an Array Field.

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.

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
6 operations can use indexes.

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

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
1 có thể trả lại các tài liệu mồ côi.
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
6
operations. See Covered Query for more information on queries covered by indexes.

Nếu giá trị của

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
3 được chỉ định là một mảng,
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
6 coi mỗi phần tử của mảng là một giá trị riêng biệt.

  • Chẳng hạn, nếu một trường có giá trị của 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, thì
    collation: {
    locale: ,
    caseLevel: ,
    caseFirst: ,
    strength: ,
    numericOrdering: ,
    alternate: ,
    maxVariable: ,
    backwards:
    }
    6 coi
    { "_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" ] }
    5,
    { "_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" ] }
    6 và
    { "_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" ] }
    5 là các giá trị riêng biệt.
    collation: {
    locale: ,
    caseLevel: ,
    caseFirst: ,
    strength: ,
    numericOrdering: ,
    alternate: ,
    maxVariable: ,
    backwards:
    }
    6
    method/the
    collation: {
    locale: ,
    caseLevel: ,
    caseFirst: ,
    strength: ,
    numericOrdering: ,
    alternate: ,
    maxVariable: ,
    backwards:
    }
    1 command as well as the aggregation pipeline with the

    db.inventory.distinct[ "dept" ]

    2 stage.

  • Ví dụ, xem Trả về các giá trị riêng biệt cho một trường mảng.

    collation: {
    locale: ,
    caseLevel: ,
    caseFirst: ,
    strength: ,
    numericOrdering: ,
    alternate: ,
    maxVariable: ,
    backwards:
    }
    6 method or the
    collation: {
    locale: ,
    caseLevel: ,
    caseFirst: ,
    strength: ,
    numericOrdering: ,
    alternate: ,
    maxVariable: ,
    backwards:
    }
    1 command.

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

    collation: {
    locale: ,
    caseLevel: ,
    caseFirst: ,
    strength: ,
    numericOrdering: ,
    alternate: ,
    maxVariable: ,
    backwards:
    }
    6 có thể sử dụng các chỉ mục.

Quan trọng

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

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
6. 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.

Để 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: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
6/lệnh
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
1 cũng như đường ống tổng hợp với giai đoạn

db.inventory.distinct[ "dept" ]

2.
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
6
disconnects before the operation completes, MongoDB marks
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
6
for termination using

db.inventory.distinct[ "dept" ]

8

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

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
6 hoặc lệnh
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
1.

Để 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

db.inventory.distinct[ "dept" ]

2 thay thế. Xem hoạt động khác biệt để biết chi tiết.

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.

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

Để 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.

db.inventory.distinct[ "dept" ]

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

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
6 ngắt kết nối trước khi hoạt động hoàn thành, MongoDB đánh dấu
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
6 để chấm dứt bằng cách sử dụng

db.inventory.distinct[ "dept" ]

8

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: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
1 yêu cầu thành viên phải ở trạng thái

db.inventory.distinct[ "item.sku" ]

0 hoặc

db.inventory.distinct[ "item.sku" ]

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

db.inventory.distinct[ "item.sku" ]

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

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" ]

9 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[ "sizes" ]

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

db.inventory.distinct[ "item.sku" ]

5:

db.inventory.distinct[ "sizes" ]

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

db.inventory.distinct[ "sizes" ]

3 khác biệt:

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

db.inventory.distinct[ "sizes" ]

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

db.inventory.distinct[ "sizes" ]

6
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" ]

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

db.inventory.distinct[ "sizes" ]

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

db.inventory.distinct[ "item.sku" ]

6 bằng

db.inventory.distinct[ "item.sku", { dept: "A" } ]

0:

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" ]

9 khác biệt:

Đố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.

Bộ sưu tập

db.inventory.distinct[ "item.sku", { dept: "A" } ]

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

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

Hoạt động tổng hợp sau đây bao gồm tùy chọn đối chiếu:

db.myColl.distinct[ "category", {}, { collation: { locale: "fr", strength: 1 } } ]

Để biết mô tả về các trường đối chiếu, xem tài liệu đối chiếu.

Chúng ta có thể sử dụng khác biệt với Tìm trong MongoDB không?

Cả hai hoạt động tìm thấy và khác biệt đều rất hữu ích khi lấy dữ liệu từ MongoDB. Hoạt động tìm trả về tất cả dữ liệu cùng một lúc hoặc theo truy vấn và trình chiếu. Hoạt động riêng biệt có chức năng đặc biệt là truy xuất các giá trị duy nhất của một trường được chỉ định.. The find operation returns the data all at once or according to the query and projection. The distinct operation has a special functionality of retrieving unique values of a specified field.

Làm cách nào để đặt các trường duy nhất trong MongoDB?

Để tạo một chỉ mục duy nhất, hãy sử dụng phương thức db.Collection.CreateIndex [] với tùy chọn duy nhất được đặt thành true.use the db. collection. createIndex[] method with the unique option set to true .

Làm thế nào để tôi chạy một truy vấn riêng biệt trong La bàn MongoDB?

Bạn có thể làm điều này thông qua khung tổng hợp trong la bàn, sử dụng $ ủ rũ và $ group.$ Unfind được thực hiện để tạo ra một tài liệu duy nhất cho mỗi phần tử trong mảng đích, cho phép toán tử $ Addtoset trong giai đoạn nhóm $ để sau đó nắm bắt các thể loại như các yếu tố riêng biệt.via aggregation framework in Compass, using $unwind and $group. The $unwind is performed to create a unique document for each element in the target array, which enables the $addToSet operator in the $group stage to then capture the genres as distinct elements.

Làm cách nào để loại bỏ các bản sao trong bộ sưu tập MongoDB?

Các bản ghi trùng lặp có thể được xóa khỏi bộ sưu tập MongoDB bằng cách tạo một chỉ mục duy nhất trên bộ sưu tập và chỉ định tùy chọn Dropdups.Dưới đây là dấu vết của một phiên hiển thị nội dung của một bộ sưu tập trước và sau khi tạo một chỉ mục duy nhất với các thả.creating a unique index on the collection and specifying the dropDups option. Here is the trace of a session that shows the contents of a collection before and after creating a unique index with dropDups.

Bài Viết Liên Quan

Chủ Đề