Nếu tên bộ sưu tập của bạn bao gồm các ký tự đặc biệt, chẳng hạn như ký tự gạch dưới hoặc bắt đầu bằng số, thì để truy cập bộ sưu tập, hãy sử dụng phương thức
1 trở lên, MongoDB tăng giới hạn cho các bộ sưu tập và chế độ xem chưa được phân đoạn lên 255 byte và 235 byte cho các bộ sưu tập được phân đoạn. Đối với bộ sưu tập hoặc chế độ xem, không gian tên bao gồm tên cơ sở dữ liệu, dấu phân cách dấu chấm (
Hãy thận trọng, các vấn đề được thảo luận trong phần này có thể dẫn đến mất hoặc hỏng dữ liệu
Ngôn ngữ truy vấn MongoDB không được xác định trên các tài liệu có tên trường trùng lặp. Trình tạo BSON có thể hỗ trợ tạo tài liệu BSON có tên trường trùng lặp. Mặc dù trình tạo BSON có thể không gây ra lỗi, nhưng việc chèn các tài liệu này vào MongoDB không được hỗ trợ ngay cả khi việc chèn thành công. Ví dụ: chèn tài liệu BSON có tên trường trùng lặp thông qua trình điều khiển MongoDB có thể khiến trình điều khiển âm thầm loại bỏ các giá trị trùng lặp trước khi chèn
Bắt đầu từ MongoDB 5. 0, tên trường tài liệu có thể là tiền tố đô la (______ 06) và có thể chứa dấu chấm (________ 92). Tuy nhiên,
96 có thể không hoạt động như mong đợi trong một số trường hợp với .
MongoDB Extended JSON v2 không thể phân biệt giữa các trình bao bọc kiểu và các trường có cùng tên với các trình bao bọc kiểu. Không sử dụng các định dạng JSON mở rộng trong các ngữ cảnh mà các biểu diễn BSON tương ứng có thể bao gồm các khóa có tiền tố đô la (
Khi chạy các lệnh chèn, cập nhật và findAndModify, trình điều khiển 5. 0 tương thích loại bỏ các hạn chế về việc sử dụng các tài liệu có tên trường có tiền tố đô la (
2). Các tên trường này đã tạo ra lỗi phía máy khách trong các phiên bản trình điều khiển trước đó
Các hạn chế được loại bỏ bất kể phiên bản máy chủ mà trình điều khiển được kết nối với. Nếu một 5. 0 gửi tài liệu đến máy chủ cũ hơn, tài liệu sẽ bị từ chối mà không gửi lỗi
Độ dài không gian tên
Đối với featureCompatibilityVersion được đặt thành
1 trở lên, MongoDB tăng giới hạn cho các bộ sưu tập và chế độ xem chưa được phân đoạn lên 255 byte và 235 byte cho các bộ sưu tập được phân đoạn. Đối với bộ sưu tập hoặc chế độ xem, không gian tên bao gồm tên cơ sở dữ liệu, dấu phân cách dấu chấm (
12 hoặc cũ hơn, tổng kích thước của mục nhập chỉ mục, có thể bao gồm chi phí cấu trúc tùy thuộc vào loại BSON, phải nhỏ hơn 1024 byte
Khi áp dụng Giới hạn khóa chỉ mục .
MongoDB sẽ không tạo chỉ mục trên bộ sưu tập nếu mục nhập chỉ mục cho tài liệu hiện có vượt quá giới hạn khóa chỉ mục .
Hoạt động lập chỉ mục lại sẽ xảy ra lỗi nếu mục nhập chỉ mục cho trường được lập chỉ mục vượt quá giới hạn khóa chỉ mục . Các hoạt động lập chỉ mục lại xảy ra như một phần của lệnh
Bởi vì các thao tác này loại bỏ tất cả các chỉ mục khỏi bộ sưu tập và sau đó tạo lại chúng theo trình tự, nên lỗi từ giới hạn khóa chỉ mục ngăn không cho các thao tác này thực hiện .
MongoDB sẽ không chèn vào bộ sưu tập được lập chỉ mục bất kỳ tài liệu nào có trường được lập chỉ mục có mục nhập chỉ mục tương ứng sẽ vượt quá giới hạn khóa chỉ mục , mà thay vào đó . Các phiên bản trước của MongoDB sẽ chèn nhưng không lập chỉ mục các tài liệu đó.
Các cập nhật cho trường được lập chỉ mục sẽ bị lỗi nếu giá trị được cập nhật khiến mục nhập chỉ mục vượt quá giới hạn khóa chỉ mục .
Nếu một tài liệu hiện có chứa một trường được lập chỉ mục có mục nhập chỉ mục vượt quá giới hạn, mọi cập nhật dẫn đến việc di chuyển tài liệu đó trên đĩa sẽ bị lỗi
95 sẽ không chèn tài liệu chứa trường được lập chỉ mục có mục nhập chỉ mục tương ứng sẽ vượt quá . index key limit.
Trong MongoDB 2. 6, các thành viên phụ của bộ bản sao sẽ tiếp tục sao chép tài liệu có trường được lập chỉ mục có mục nhập chỉ mục tương ứng vượt quá giới hạn khóa chỉ mục khi đồng bộ hóa ban đầu nhưng sẽ in cảnh báo .
Thành viên phụ cũng cho phép các hoạt động xây dựng và xây dựng lại chỉ mục trên tập hợp chứa trường được lập chỉ mục có mục nhập chỉ mục tương ứng vượt quá giới hạn khóa chỉ mục nhưng .
Với bộ bản sao phiên bản hỗn hợp trong đó bản phụ là phiên bản 2. 6 và chính là phiên bản 2. 4, thứ hai sẽ sao chép tài liệu được chèn hoặc cập nhật trên 2. 4 chính, nhưng sẽ in thông báo lỗi trong nhật ký nếu tài liệu chứa trường được lập chỉ mục có mục nhập chỉ mục tương ứng vượt quá giới hạn khóa chỉ mục .
Đối với các bộ sưu tập được phân đoạn hiện có, quá trình di chuyển đoạn dữ liệu sẽ không thành công nếu đoạn dữ liệu đó có tài liệu chứa trường được lập chỉ mục có mục nhập chỉ mục vượt quá giới hạn khóa chỉ mục.
Số lượng chỉ mục trên mỗi bộ sưu tập
Một bộ sưu tập có thể có không quá 64 chỉ mục
Tên chỉ mục Độ dài
Ghi chú
Thay đổi trong phiên bản 4. 2
Trong các phiên bản trước của MongoDB hoặc các phiên bản MongoDB có fCV được đặt thành
04
Các trường có Chỉ mục 2dsphere chỉ có thể chứa Hình học
Các trường có chỉ mục 2dsphere phải chứa dữ liệu hình học ở dạng cặp tọa độ hoặc dữ liệu GeoJSON. Nếu bạn cố gắng chèn một tài liệu có dữ liệu phi hình học vào trường được lập chỉ mục
07 tính tích cartesian của các bộ khóa được tạo cho từng trường. Nếu cả hai bộ đều lớn, thì việc tính toán tích cartesian có thể khiến thao tác vượt quá giới hạn bộ nhớ
01 giới hạn số lượng khóa tối đa được tạo cho một tài liệu để tránh lỗi bộ nhớ. Mặc định là 100000 khóa chỉ mục trên mỗi tài liệu. Có thể tăng giới hạn, nhưng nếu một thao tác yêu cầu nhiều khóa hơn tham số
01 chỉ định, thì thao tác đó sẽ không thành công
Các giá trị NaN được Công cụ lưu trữ WiredTiger trả về từ Truy vấn được bảo hiểm luôn thuộc loại double
Nếu giá trị của một trường được trả về từ một truy vấn được bao phủ bởi một chỉ mục là
06 là 200 megabyte (đối với phiên bản 4. 2. 3 trở lên) và 500 (dành cho phiên bản 4. 2. 2 trở về trước), được chia sẻ giữa tất cả các chỉ mục được tạo bằng một lệnh
03. Việc đặt giới hạn bộ nhớ cao hơn có thể giúp hoàn thành việc xây dựng chỉ mục nhanh hơn. Tuy nhiên, đặt giới hạn này quá cao so với RAM chưa sử dụng trên hệ thống của bạn có thể dẫn đến cạn kiệt bộ nhớ và tắt máy chủ
12, giới hạn bộ nhớ xây dựng chỉ mục chỉ áp dụng cho các bản dựng chỉ mục nền trước
Việc xây dựng chỉ mục có thể được bắt đầu bằng lệnh của người dùng, chẳng hạn như Tạo chỉ mục hoặc bằng một quy trình quản trị, chẳng hạn như đồng bộ hóa ban đầu. Cả hai đều phải tuân theo giới hạn do
Thao tác đồng bộ hóa ban đầu chỉ điền vào một bộ sưu tập tại một thời điểm và không có nguy cơ vượt quá giới hạn bộ nhớ. Tuy nhiên, người dùng có thể bắt đầu xây dựng chỉ mục trên nhiều bộ sưu tập trong nhiều cơ sở dữ liệu đồng thời và có khả năng tiêu thụ một lượng bộ nhớ lớn hơn giới hạn được đặt trong
Để giảm thiểu tác động của việc xây dựng chỉ mục trên các bộ bản sao và các cụm phân đoạn với các phân đoạn của bộ bản sao, hãy sử dụng quy trình tạo chỉ mục cuộn như được mô tả trên Bản dựng chỉ mục cuộn trên các bộ bản sao
Các loại đối chiếu và chỉ mục
Các loại chỉ mục sau chỉ hỗ trợ so sánh nhị phân đơn giản và không hỗ trợ đối chiếu
Một bộ sưu tập hiện có chỉ có thể được chia nhỏ nếu kích thước của nó không vượt quá giới hạn cụ thể. Các giới hạn này có thể được ước tính dựa trên kích thước trung bình của tất cả các giá trị khóa phân đoạn và kích thước khối được định cấu hình
Quan trọng
Các giới hạn này chỉ áp dụng cho hoạt động phân mảnh ban đầu. Bộ sưu tập được phân mảnh có thể phát triển đến bất kỳ kích thước nào sau khi kích hoạt thành công phân đoạn
Sử dụng các công thức sau để tính kích thước bộ sưu tập tối đa theo lý thuyết
07 nhỏ hơn hoặc gần bằng với bộ sưu tập mục tiêu, hãy tăng kích thước khối để đảm bảo phân mảnh ban đầu thành công. Nếu có nghi ngờ về việc liệu kết quả tính toán có quá 'gần' với kích thước bộ sưu tập mục tiêu hay không, tốt hơn là nên tăng kích thước khối
Sau khi phân mảnh ban đầu thành công, bạn có thể giảm kích thước khối nếu cần. Nếu sau này bạn giảm kích thước khối, có thể mất thời gian để tất cả các khối chia thành kích thước mới. Xem Sửa đổi kích thước khối trong cụm phân đoạn để biết hướng dẫn về cách sửa đổi kích thước khối
Bảng này minh họa kích thước bộ sưu tập tối đa gần đúng bằng cách sử dụng các công thức được mô tả ở trên
Kích thước trung bình của các giá trị khóa phân đoạn
512 byte
256 byte
128 byte
64 byte
Số lần chia tối đa
32,768
65,536
131,072
262,144
Kích thước bộ sưu tập tối đa (Kích thước khối 64 MB)
1TB
2TB
4 TB
8 TB
Kích thước bộ sưu tập tối đa (Kích thước khối 128 MB)
2TB
4 TB
8 TB
16 TB
Kích thước bộ sưu tập tối đa (Kích thước khối 256 MB)
4 TB
8 TB
16 TB
32 TB
Thao tác sửa đổi tài liệu đơn lẻ trong bộ sưu tập được chia nhỏ
90 trả về lỗi
Chỉ mục duy nhất trong bộ sưu tập được chia nhỏ
MongoDB không hỗ trợ các chỉ mục duy nhất trên các phân đoạn, ngoại trừ khi chỉ mục duy nhất chứa khóa phân đoạn đầy đủ làm tiền tố của chỉ mục. Trong những tình huống này, MongoDB sẽ thực thi tính duy nhất trên toàn bộ khóa, không phải một trường duy nhất
Mẹo
Nhìn thấy
Số lượng tài liệu tối đa trên mỗi đoạn để di chuyển
Theo mặc định, MongoDB không thể di chuyển một đoạn nếu số lượng tài liệu trong đoạn lớn hơn 1. gấp 3 lần kết quả của việc chia kích thước khối được định cấu hình cho kích thước tài liệu trung bình.
20 cho phép bộ cân bằng di chuyển các khối quá lớn để di chuyển miễn là các khối đó không được gắn nhãn jumbo. Xem Các khối cân bằng vượt quá giới hạn kích thước để biết chi tiết
21 có thể chỉ định một tùy chọn mới forceJumbo để cho phép di chuyển các khối quá lớn để di chuyển. Các khối có thể hoặc không thể được dán nhãn jumbo
Kích thước khóa mảnh
Bắt đầu từ phiên bản 4. 4, MongoDB loại bỏ giới hạn về kích thước khóa phân đoạn
Đối với MongoDB 4. 2 trở về trước, khóa phân đoạn không thể vượt quá 512 byte
Loại chỉ mục khóa phân đoạn
Chỉ mục khóa phân đoạn có thể là chỉ mục tăng dần trên khóa phân đoạn, chỉ mục tổng hợp bắt đầu bằng khóa phân đoạn và chỉ định thứ tự tăng dần cho khóa phân đoạn hoặc chỉ mục băm
Chỉ mục khóa phân đoạn không thể là chỉ mục chỉ định chỉ mục đa khóa, chỉ mục văn bản hoặc chỉ mục không gian địa lý trên các trường khóa phân đoạn
Lựa chọn khóa phân đoạn là bất biến trong MongoDB 4. 2 trở về trước
Các tùy chọn thay đổi khóa phân đoạn tùy thuộc vào phiên bản MongoDB mà bạn đang chạy
Bắt đầu từ MongoDB 5. 0, bạn có thể phân chia lại bộ sưu tập bằng cách thay đổi khóa phân đoạn của tài liệu
Bắt đầu từ MongoDB 4. 4, bạn có thể tinh chỉnh khóa phân đoạn bằng cách thêm trường hậu tố hoặc các trường vào khóa phân đoạn hiện có
Trong MongoDB 4. 2 trở về trước, không thể thay đổi lựa chọn khóa phân đoạn sau khi phân đoạn
Trong MongoDB 4. 2 trở về trước, để thay đổi khóa phân đoạn
Kết xuất tất cả dữ liệu từ MongoDB sang định dạng bên ngoài
Bỏ bộ sưu tập đã phân mảnh ban đầu
Định cấu hình sharding bằng phím shard mới
Chia trước phạm vi khóa phân đoạn để đảm bảo phân phối đồng đều ban đầu
Khôi phục dữ liệu đã đổ vào MongoDB
Việc tăng các phím Shard một cách đơn điệu có thể hạn chế thông lượng chèn
Đối với các cụm có khối lượng chèn cao, khóa phân đoạn có các phím tăng và giảm đơn điệu có thể ảnh hưởng đến thông lượng chèn. Nếu khóa phân đoạn của bạn là trường
Khi chèn tài liệu bằng các phím phân đoạn tăng dần đơn điệu, tất cả các phần chèn đều thuộc về cùng một đoạn trên một phân đoạn duy nhất. Hệ thống cuối cùng sẽ phân chia phạm vi khối nhận tất cả các thao tác ghi và di chuyển nội dung của nó để phân phối dữ liệu đồng đều hơn. Tuy nhiên, tại bất kỳ thời điểm nào, cụm chỉ hướng các hoạt động chèn vào một phân đoạn duy nhất, điều này tạo ra tắc nghẽn thông lượng chèn
Nếu các hoạt động trên cụm chủ yếu là hoạt động đọc và cập nhật, giới hạn này có thể không ảnh hưởng đến cụm
Để tránh ràng buộc này, hãy sử dụng khóa phân đoạn được băm hoặc chọn trường không tăng hoặc giảm đơn điệu
Các khóa phân đoạn được băm và các chỉ mục được băm lưu trữ các giá trị băm của các khóa có giá trị tăng dần
Hoạt động sắp xếp
Nếu MongoDB không thể sử dụng một hoặc nhiều chỉ mục để lấy thứ tự sắp xếp, MongoDB phải thực hiện thao tác sắp xếp chặn trên dữ liệu. Tên đề cập đến yêu cầu giai đoạn
26 cho phép MongoDB sử dụng các tệp tạm thời trên đĩa để lưu trữ dữ liệu vượt quá giới hạn bộ nhớ hệ thống 100 megabyte trong khi xử lý thao tác sắp xếp chặn
Thay đổi trong phiên bản 4. 4. Đối với MongoDB 4. 2 trở về trước, thao tác sắp xếp chặn không được vượt quá 32 megabyte bộ nhớ hệ thống
Để biết thêm thông tin về sắp xếp và sử dụng chỉ mục, hãy xem Sử dụng Sắp xếp và Chỉ mục
29, các giai đoạn đường ống yêu cầu hơn 100 megabyte bộ nhớ để thực thi ghi tệp tạm thời vào đĩa theo mặc định. Bạn có thể vô hiệu hóa việc ghi các tệp tạm thời vào đĩa cho các lệnh
34, các giai đoạn đường ống yêu cầu hơn 100 megabyte bộ nhớ để thực thi sẽ gây ra lỗi theo mặc định. Bạn có thể cho phép ghi các tệp tạm thời vào đĩa cho
Các giai đoạn quy trình hoạt động trên luồng tài liệu với mỗi giai đoạn quy trình tiếp nhận tài liệu, xử lý chúng và sau đó xuất tài liệu kết quả
Một số giai đoạn không thể xuất bất kỳ tài liệu nào cho đến khi họ đã xử lý tất cả các tài liệu đến. Các giai đoạn đường ống này phải giữ đầu ra giai đoạn của chúng trong RAM cho đến khi tất cả các tài liệu đến được xử lý. Do đó, các giai đoạn quy trình này có thể yêu cầu nhiều dung lượng hơn giới hạn 100 MB
Bạn có thể chỉ định thao tác đọc/ghi (CRUD) trên các bộ sưu tập hiện có. Để biết danh sách các hoạt động CRUD, hãy xem Hoạt động CRUD
Bắt đầu từ MongoDB 4. 4, bạn có thể tạo bộ sưu tập và lập chỉ mục trong giao dịch. Để biết chi tiết, hãy xem Tạo bộ sưu tập và chỉ mục trong giao dịch
Các bộ sưu tập được sử dụng trong một giao dịch có thể nằm trong các cơ sở dữ liệu khác nhau
Ghi chú
Bạn không thể tạo bộ sưu tập mới trong giao dịch ghi chéo. Ví dụ: nếu bạn ghi vào một bộ sưu tập hiện có trong một phân đoạn và ngầm tạo một bộ sưu tập trong một phân đoạn khác, MongoDB không thể thực hiện cả hai thao tác trong cùng một giao dịch
Bạn không thể ghi vào bộ sưu tập giới hạn. (Bắt đầu từ MongoDB 4. 2)
Các hoạt động sau đây không được phép trong giao dịch
Các hoạt động ảnh hưởng đến danh mục cơ sở dữ liệu, chẳng hạn như tạo hoặc xóa bộ sưu tập hoặc chỉ mục khi sử dụng MongoDB 4. 2 hoặc thấp hơn. Bắt đầu từ MongoDB 4. 4, bạn có thể tạo các bộ sưu tập và chỉ mục trong các giao dịch trừ khi giao dịch là giao dịch ghi chéo. Để biết chi tiết, hãy xem Tạo bộ sưu tập và chỉ mục trong giao dịch
Tạo bộ sưu tập mới trong giao dịch ghi chéo. Ví dụ: nếu bạn ghi vào một bộ sưu tập hiện có trong một phân đoạn và ngầm tạo một bộ sưu tập trong một phân đoạn khác, MongoDB không thể thực hiện cả hai thao tác trong cùng một giao dịch
9Trong các phiên bản trước, MongoDB coi việc bao gồm/loại trừ trường trống giống như phép chiếu của các trường không tồn tại. Va chạm đường dẫn. Tài liệu nhúng và các trường của nóBắt đầu trong MongoDB 4. 4, chiếu một tài liệu nhúng với bất kỳ trường nào của tài liệu nhúng là bất hợp pháp. Ví dụ: xem xét một bộ sưu tập
1Trong các phiên bản trước, phép chiếu cuối cùng giữa các tài liệu được nhúng và các trường của nó xác định phép chiếu
Nếu phép chiếu của tài liệu được nhúng xuất hiện sau bất kỳ và tất cả các phép chiếu của các trường của nó, thì MongoDB sẽ chiếu tài liệu được nhúng. Ví dụ: tài liệu phép chiếu
Nếu phép chiếu của tài liệu nhúng xuất hiện trước phép chiếu bất kỳ trường nào của nó, thì MongoDB sẽ chiếu trường hoặc các trường đã chỉ định. Ví dụ: tài liệu phép chiếu
55 trong ngưỡng này được đánh dấu là đã hết hạn và có thể bị đóng bởi máy chủ MongoDB bất kỳ lúc nào. Đóng phiên sẽ hủy mọi hoạt động đang diễn ra và mở con trỏ được liên kết với phiên. Điều này bao gồm các con trỏ được định cấu hình bằng
02. Phiên làm mới mỗi khi ứng dụng yêu cầu một lô tài liệu mới từ máy chủ. Tuy nhiên, nếu ứng dụng mất hơn 30 phút để xử lý lô tài liệu hiện tại, phiên được đánh dấu là đã hết hạn và đóng. Khi ứng dụng yêu cầu lô tài liệu tiếp theo, máy chủ sẽ trả về lỗi do con trỏ bị tắt khi đóng phiên
Đối với các thao tác trả về con trỏ, nếu con trỏ có thể không hoạt động trong hơn 30 phút, hãy thực hiện thao tác trong một phiên rõ ràng bằng cách sử dụng