Matthew Chestnut là Cố vấn cấp cao tại ThreeWill. Ông có hơn 25 năm kinh nghiệm phát triển phần mềm về các ứng dụng năng suất kinh doanh của doanh nghiệp và phòng ban. Ông có thành tích đã được chứng minh về phát triển phần mềm chất lượng, quản lý dự án theo ngân sách và quản lý các nhóm phát triển phần mềm thành công Show
Cài đặt đối chiếu MongoDBĐược giới thiệu trong phiên bản 3. 4, các cài đặt MongoDB này ảnh hưởng đến cách dữ liệu được chọn và thứ tự dữ liệu được trả về Bài đăng này sẽ chứng minh các cài đặt đối chiếu được sử dụng và kết quả của các cài đặt đó. Tôi có một bộ dữ liệu, truy vấn và kết quả mẫu, cùng với một số nhận xét, để hỗ trợ cho các kết luận này Trường hợp sử dụngChúng tôi đã có trường hợp sử dụng sau trong một dự án gần đây sử dụng MongoDB (phiên bản 4. 2)
Chi tiết triển khaiĐể đáp ứng trường hợp sử dụng được trình bày, chúng tôi đã làm như sau
Dưới đây là thông tin chúng tôi đã sử dụng để đưa ra các quyết định triển khai này cùng với dữ liệu mẫu và truy vấn để chứng minh các cài đặt khác nhau thay đổi kết quả như thế nào Thông tin MongoDBĐây là thông tin ảnh hưởng đến thử nghiệm và quyết định của chúng tôi bộ sưu tậpĐối chiếu cho phép người dùng 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ư quy tắc cho trường hợp chữ cái và dấu trọng âm. Bạn có thể chỉ định đối chiếu cho một bộ sưu tập hoặc dạng xem, chỉ mục hoặc các hoạt động cụ thể hỗ trợ đối chiếu Cài đặt “Sức mạnh” đối chiếuMức độ so sánh cần thực hiện, phù hợp với Mức độ so sánh của ICU
Ghi chú. Trong một số ngôn ngữ (chẳng hạn như tiếng Đan Mạch), một số chữ cái có dấu được coi là các ký tự cơ sở riêng biệt. Tuy nhiên, trong hầu hết các ngôn ngữ, một chữ cái có dấu chỉ có sự khác biệt thứ cấp so với phiên bản không có dấu của chữ cái đóĐiểm mạnh 3 – So sánh cấp ba. Đối chiếu thực hiện so sánh với sự khác biệt cấp ba, chẳng hạn như các biến thể trường hợp và chữ cái. Nghĩa là, đối chiếu thực hiện so sánh các ký tự cơ sở (sự khác biệt chính), dấu phụ (sự khác biệt thứ cấp), trường hợp và biến thể (sự khác biệt cấp ba). Sự khác biệt giữa các ký tự cơ sở được ưu tiên hơn sự khác biệt thứ cấp, được ưu tiên hơn sự khác biệt cấp ba. Đây là mức cường độ mặc định nếu cường độ không được chỉ định. Bậc đại học. Sự khác biệt giữa chữ hoa và chữ thường trong các ký tự được phân biệt ở cấp độ thứ ba (ví dụ: “ao” < “Ao” < “aò”). Ngoài ra, một biến thể của một chữ cái khác với dạng cơ bản ở cấp độ thứ ba (chẳng hạn như “A” và “Ⓐ”). Một ví dụ khác là sự khác biệt giữa Kana lớn và nhỏ. Sự khác biệt cấp ba bị bỏ qua khi có sự khác biệt chính hoặc phụ ở bất kỳ đâu trong chuỗi. Đây còn được gọi là cường độ cấp 3
Chỉ mục đối chiếuĐối với mục đích của bài đăng này, tôi đã cố tình bỏ qua bất kỳ việc tạo và sử dụng chỉ mục nào liên quan đến các truy vấn và kết quả mẫu Đối chiếu và sử dụng chỉ mụcNhìn thấy. https. // tài liệu. mongodb. com/thủ công/tham khảo/đối chiếu/chỉ mục. html Để sử dụng một chỉ mục để so sánh chuỗi, một thao tác cũng phải chỉ định cùng một đối chiếu. Nghĩa là, một chỉ mục có đối chiếu không thể hỗ trợ thao tác thực hiện so sánh chuỗi trên các trường được lập chỉ mục nếu thao tác chỉ định một đối chiếu khác Biểu thức chính quy và sử dụng chỉ mụcNhìn thấy. Đối với các truy vấn biểu thức chính quy phân biệt chữ hoa chữ thường, nếu một chỉ mục tồn tại cho trường, thì MongoDB sẽ so khớp biểu thức chính quy với các giá trị trong chỉ mục, quá trình này có thể nhanh hơn quét bộ sưu tập Các truy vấn biểu thức chính quy phân biệt chữ hoa chữ thường thường không thể sử dụng các chỉ mục một cách hiệu quả. Việc triển khai $regex không nhận biết đối chiếu và không thể sử dụng các chỉ mục phân biệt chữ hoa chữ thường Tùy chọn “allowDiskUse”Nhìn thấy. Nếu MongoDB không thể sử dụng chỉ mục để lấy tài liệu theo thứ tự sắp xếp được yêu cầu, kích thước tổng hợp của tất cả tài liệu trong thao tác sắp xếp, cộng với chi phí nhỏ, phải nhỏ hơn 32 megabyte Nếu vượt quá kích thước, bạn sẽ gặp lỗi Tràn mức sử dụng dữ liệu được đệm trong giai đoạn sắp xếp vượt quá giới hạn nội bộ Để cho phép xử lý các bộ dữ liệu lớn, bạn có thể đặt tùy chọn allowDiskUse trong phương thức tổng hợp(). Tùy chọn allowDiskUse cho phép hầu hết các hoạt động đường dẫn tổng hợp ghi dữ liệu vào một tệp tạm thời Truy vấn mẫu và dữ liệu mẫuDưới đây là dữ liệu mẫu và truy vấn thể hiện tác động của cài đặt đối chiếu Truy vấn 1 – Chọn tất cả các hàngtruy vấn 1. 1
[ps]db. getCollection(‘SortTest’) Dữ liệu mẫuAAA001 EEE003 EXTRA AAA009 EXTRA EEE015 EXTRA ZZZ021 EXTRA aaa010 EXTRA eee016 EXTRA zzz022 EXTRA ÉÉÉ017 EXTRA ééé018 ZZZ023 aaa002 eee004 extra AAA007 extra EEE011 extra ZZZ019 extra aaa008 extra eee012 extra zzz020 extra ÉÉÉ013 extra ééé014 zzz024 ÉÉÉ005 ééé006 Truy vấn 2 – So khớp chính xác giá trị thuộc tính trong đó Mã = “eee”truy vấn 2. 1
[ps]db. getCollection(‘SortTest’) Dữ liệu mẫuAAA001 aaa002 EEE003 eee004 ÉÉÉ005 ééé006 extra AAA007 extra aaa008 EXTRA AAA009 EXTRA aaa010 extra EEE011 extra eee012 extra ÉÉÉ013 extra ééé014 EXTRA EEE015 EXTRA eee016 EXTRA ÉÉÉ017 EXTRA ééé018 extra ZZZ019 extra zzz020 EXTRA ZZZ021 EXTRA zzz022 ZZZ023 zzz024 Truy vấn 2 – So khớp chính xác giá trị thuộc tính trong đó Mã = “eee”truy vấn 2. 1
[ps] db. getCollection(‘SortTest’) Dữ liệu mẫuEXTRA eee016 eee004 extra eee012 truy vấn 2. 2
[ps]db. getCollection(‘SortTest’) Dữ liệu mẫuEEE003 eee004 ÉÉÉ005 ééé006 extra EEE011 extra eee012 extra ÉÉÉ013 extra ééé014 EXTRA EEE015 EXTRA eee016 EXTRA ÉÉÉ017 EXTRA ééé018 truy vấn 2. 3
[ps]db. getCollection(‘SortTest’) Dữ liệu mẫuEEE003 eee004 extra EEE011 extra eee012 EXTRA EEE015 EXTRA eee016 truy vấn 2. 4
Cường độ 3 – Đây là mức cường độ mặc định nếu mức cường độ không được chỉ định. Đối chiếu thực hiện so sánh với sự khác biệt cấp ba, chẳng hạn như các biến thể trường hợp và chữ cái. Nghĩa là, đối chiếu thực hiện so sánh các ký tự cơ sở (sự khác biệt chính), dấu phụ (sự khác biệt thứ cấp), trường hợp và biến thể (sự khác biệt cấp ba). Sự khác biệt giữa các ký tự cơ sở được ưu tiên hơn sự khác biệt thứ cấp, được ưu tiên hơn sự khác biệt cấp ba Đối chiếu trong MongoDB là gì?Đối chiếu cho phép người dùng 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ư quy tắc cho chữ cái và dấu trọng âm. Bạn có thể chỉ định đối chiếu cho một bộ sưu tập hoặc dạng xem, chỉ mục hoặc các hoạt động cụ thể hỗ trợ đối chiếu.
MongoDB có hỗ trợ đối chiếu không?MongoDB hỗ trợ đối chiếu trên hầu hết các thao tác và tập hợp CRUD . Để có danh sách đầy đủ các thao tác được hỗ trợ, hãy xem trang hướng dẫn sử dụng máy chủ Operations that Support Collations. Để biết danh sách đầy đủ các ngôn ngữ được hỗ trợ, hãy xem trang hướng dẫn sử dụng máy chủ của chúng tôi trên Ngôn ngữ và ngôn ngữ được hỗ trợ.
Đối chiếu trong Java là gì?Lớp Collator thực hiện so sánh Chuỗi nhạy cảm với ngôn ngữ . Bạn sử dụng lớp này để xây dựng các thói quen tìm kiếm và sắp xếp cho văn bản ngôn ngữ tự nhiên. Collator là một lớp cơ sở trừu tượng. Các lớp con thực hiện các chiến lược đối chiếu cụ thể.
Làm cách nào để làm cho MongoDB không phân biệt chữ hoa chữ thường?Để sử dụng chỉ mục phân biệt chữ hoa chữ thường trên bộ sưu tập không có đối chiếu mặc định, tạo chỉ mục có đối chiếu và đặt tham số cường độ thành 1 hoặc 2 (see Collation for a detailed description of the strength parameter). You must specify the same collation at the query level in order to use the index-level collation. |