Ví dụ tham khảo thủ công mongodb
➤ Sử dụng menu thả xuống Chọn ngôn ngữ của bạn ở phía trên bên phải để đặt ngôn ngữ cho các ví dụ sau Show
Cập nhật tài liệu trong một bộ sưu tậpGhi chúBắt đầu từ MongoDB 4. 2, MongoDB có thể chấp nhận một quy trình tổng hợp để chỉ định các sửa đổi cần thực hiện thay vì một tài liệu cập nhật. Xem trang tham khảo phương pháp để biết chi tiết Cập nhật một tài liệu duy nhấtHành vinguyên tửTất cả các thao tác ghi trong MongoDB là nguyên tử ở cấp độ của một tài liệu. Để biết thêm thông tin về MongoDB và tính nguyên tử, hãy xem Tính nguyên tử và giao dịchLĩnh vực /\. "$77Sau khi được đặt, bạn không thể cập nhật giá trị của trường 77 cũng như không thể thay thế tài liệu hiện có bằng tài liệu thay thế có giá trị trường 77 khácThứ tự trườngĐối với các thao tác ghi, MongoDB giữ nguyên thứ tự của các trường tài liệu ngoại trừ các trường hợp sau
Viết lời cảm ơnVới các mối quan tâm về ghi, bạn có thể chỉ định mức xác nhận được yêu cầu từ MongoDB cho các thao tác ghi. Để biết chi tiết, xem Viết mối quan tâm Kích thước tài liệu tối đa giúp đảm bảo rằng một tài liệu không thể sử dụng quá nhiều RAM hoặc quá nhiều băng thông trong quá trình truyền. Để lưu trữ tài liệu lớn hơn kích thước tối đa, MongoDB cung cấp GridFS API. Nhìn thấy 2 và tài liệu dành cho trình điều khiển của bạn để biết thêm thông tin về GridFS. Độ sâu lồng nhau cho Tài liệu BSONMongoDB hỗ trợ không quá 100 cấp độ lồng nhau cho BSON documents. Each object or array adds a level.Hạn chế đặt tênSử dụng cách viết hoa chữ thường trong tên cơ sở dữ liệuKhông dựa vào cách viết hoa chữ thường để phân biệt giữa các cơ sở dữ liệu. Ví dụ: bạn không thể sử dụng hai cơ sở dữ liệu có tên như, 3 và 4. Sau khi bạn tạo cơ sở dữ liệu trong MongoDB, bạn phải sử dụng cách viết hoa nhất quán khi tham khảo cơ sở dữ liệu đó. Ví dụ: nếu bạn tạo cơ sở dữ liệu 3, không đề cập đến cơ sở dữ liệu đó bằng cách viết hoa thay thế, chẳng hạn như 6 hoặc 4Hạn chế về tên cơ sở dữ liệu dành cho WindowsĐối với triển khai MongoDB chạy trên Windows, tên cơ sở dữ liệu không được chứa bất kỳ ký tự nào sau đây.
Ngoài ra, tên cơ sở dữ liệu không thể chứa ký tự null Hạn chế về tên cơ sở dữ liệu cho hệ thống Unix và LinuxĐối với triển khai MongoDB chạy trên hệ thống Unix và Linux, tên cơ sở dữ liệu không được chứa bất kỳ ký tự nào sau đây.
Ngoài ra, tên cơ sở dữ liệu không thể chứa ký tự null Độ dài của tên cơ sở dữ liệuTên cơ sở dữ liệu không được để trống và phải có ít hơn 64 ký tự. Hạn chế về tên bộ sưu tậpTên bộ sưu tập phải bắt đầu bằng ký tự gạch dưới hoặc ký tự chữ cái và không được.
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 pháp 01 trong 02 or a similar method for your driver.Độ dài không gian tên
Tên trường 22 được dành riêng để sử dụng làm khóa chính; . Nếu 22 chứa các trường con, tên trường con không được bắt đầu bằng ký hiệu ( 8). Cảnh báo đặt tênCảnh báoHã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 MongoDB không hỗ trợ tên trường trùng lặpNgô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 Mối quan tâm về xuất nhập khẩu với các ký hiệu đô la (/\. "$8) và các khoảng thời gian (/\. "$04)Bắt đầu từ MongoDB 5. 0, tên trường tài liệu có thể có tiền tố đô la ( 8) và có thể chứa dấu chấm ( 04). Tuy nhiên, 29 và 00 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 ( 8). Cơ chế DBRef là một ngoại lệ đối với quy tắc chung nàyCũng có những hạn chế đối với việc sử dụng ____229 và 04) để biểu thị phân cấp dữ liệu nên dấu chấm ( 04) trong tên trường sẽ bị hiểu sai là mức lồng nhau. Mất dữ liệu có thể xảy ra với ký hiệu đô la (_______08) và dấu chấm (/\. "$04)Có khả năng mất dữ liệu nhỏ khi sử dụng tên trường có tiền tố đô la ( 8) hoặc tên trường có chứa dấu chấm ( 04) nếu các tên trường này được sử dụng cùng với thao tác ghi không được xác nhận (ghi mối quan tâm 11) trên các máy chủ cũ hơn MongoDB 5. 0Khi 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 tài liệu có tên trường có tiền tố đô la ( 8) hoặc có chứa dấu chấm ( 04). 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 không gian tênĐộ dài không gian tên
MẹoXem thêmHạn chế đặt tên chỉ mụcGiới hạn khóa chỉ mụcLưu ýThay đổi trong phiên bản 4. 2Bắt đầu từ phiên bản 4. 2, MongoDB xóa Giới hạn khóa chỉ mục cho FeatureCompatibilityVersion (fCV) được đặt thành 06 hoặc cao hơn. Đối với MongoDB 2. 6 đến các phiên bản MongoDB có fCV được đặt thành 19 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 byteKhi áp dụng Giới hạn khóa chỉ mục .
Một bộ sưu tập không thể có nhiều hơn 64 chỉ mục. Độ dài tên chỉ mụcLưu ýThay đổi trong phiên bản 4. 2Bắt đầu từ phiên bản 4. 2, MongoDB loại bỏ giới hạn Độ dài tên chỉ mục đối với các phiên bản MongoDB có FeatureCompatibilityVersion (fCV) được đặt thành 06 hoặc cao hơn. 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 19 hoặc cũ hơn, các tên chỉ mục đủ điều kiện, bao gồm không gian tên và dấu phân cách dấu chấm (i. e. 06), không thể dài hơn 127 byteTheo mặc định, 07 là sự kết hợp của tên trường và loại chỉ mục. Bạn có thể chỉ định rõ ràng phương pháp 07 cho phương pháp 09 để đảm bảo rằng tên chỉ mục đủ điều kiện không vượt quá giới hạnSố lượng trường được lập chỉ mục trong một chỉ mục tổng hợpKhông được có nhiều hơn 32 trường trong một chỉ mục tổng hợp. Truy vấn không được sử dụng cả chỉ mục văn bản và chỉ mục không gian địa lýBạn không thể kết hợp truy vấn 00 yêu cầu chỉ mục văn bản đặc biệt với toán tử truy vấn yêu cầu loại chỉ mục đặc biệt khác. Ví dụ: bạn không thể kết hợp truy vấn 00 với toán tử 02. Các trường có Chỉ mục 2dsphere chỉ có thể chứa Hình họcCá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 03 hoặc tạo chỉ mục 03 trên một bộ sưu tập trong đó trường được lập chỉ mục có dữ liệu phi hình học, thao tác sẽ không thành công. MẹoXem thêmGiới hạn chỉ mục duy nhất trong Hạn chế hoạt động của Sharding. Số lượng khóa chỉ mục 2dsphere có hạnĐể tạo khóa cho chỉ mục 2dsphere, 05 ánh xạ các hình dạng GeoJSON thành một biểu diễn bên trong. Biểu diễn bên trong kết quả có thể là một mảng lớn các giá trị. Khi 05 tạo khóa chỉ mục trên trường chứa một mảng, thì 05 sẽ tạo khóa chỉ mục cho từng phần tử mảng. Đối với các chỉ mục phức hợp, 05 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ớ 09 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ố 09 chỉ định, thì thao tác đó sẽ thất bạiCác giá trị NaN được Công cụ lưu trữ WiredTiger trả về từ Truy vấn được bao phủ luôn thuộc loại doubleNế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à 11, . Chỉ mục nhiều khóaChỉ mục nhiều khóa không thể bao gồm các truy vấn trên (các) trường mảng. Chỉ mục không gian địa lýChỉ mục không gian địa lý không thể bao gồm một truy vấn. Sử dụng bộ nhớ trong xây dựng chỉ mục 14 hỗ trợ xây dựng một hoặc nhiều chỉ mục trên một bộ sưu tập. 14 sử dụng kết hợp bộ nhớ và các tệp tạm thời trên đĩa để hoàn thành việc xây dựng chỉ mục. Giới hạn sử dụng bộ nhớ mặc định cho 14 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 14. Khi đạt đến giới hạn bộ nhớ, 14 sử dụng các tệp đĩa tạm thời trong thư mục con có tên 19 trong thư mục 00 để hoàn tất quá trình xây dựng. Bạn có thể ghi đè giới hạn bộ nhớ bằng cách đặt tham số máy chủ 01. 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ủThay đổi trong phiên bản 4. 2
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 01 đặt raThao 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 01MẹoĐể 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ụcCá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ẹoĐể tạo chỉ mục 06, 07 hoặc 08 trên bộ sưu tập có đối chiếu không đơn giản, bạn phải chỉ định rõ ràng 09 khi tạo chỉ mụcChỉ mục ẩn
sắp xếpSố lượng khóa sắp xếp tối đaBạn có thể sắp xếp trên tối đa 32 khóa. Dữ liệuSố lượng tài liệu tối đa trong một bộ sưu tập giới hạnNếu bạn chỉ định số lượng tài liệu tối đa trong một bộ sưu tập giới hạn với tham số 03 của 02, thì giá trị phải nhỏ hơn 2 31 tài liệu. Nếu bạn không chỉ định số lượng tài liệu tối đa khi tạo bộ sưu tập giới hạn, sẽ không có giới hạn về số lượng tài liệu Bộ bản saoSố thành viên của một bộ bản saoBộ bản sao có thể có tối đa 50 thành viên. Số thành viên biểu quyết của một bộ bản saoBộ bản sao có thể có tối đa 7 thành viên biểu quyết. Đối với các bộ bản sao có tổng số hơn 7 thành viên, xem Thành viên không bỏ phiếu. Kích thước tối đa của Oplog được tạo tự độngNếu bạn không chỉ định rõ ràng kích thước oplog (i. e. với 04 hoặc 05) MongoDB sẽ tạo một oplog không lớn hơn 50 gigabyte. [1][1]Starting in MongoDB 4.0, the oplog can grow past its configured size limit to avoid deleting the 06.Cụm phân mảnhCác cụm được chia nhỏ có các hạn chế và ngưỡng được mô tả tại đây Sharding hạn chế hoạt độngHoạt động không khả dụng trong môi trường phân mảnh 07 không cho phép tham chiếu đến đối tượng 08 từ hàm 07. Điều này không phổ biến trong các bộ sưu tập chưa được chia nhỏ. Lệnh 10 không được hỗ trợ trong môi trường phân mảnhTrong MongoDB 5. 0 trở về trước, bạn không thể chỉ định các bộ sưu tập được phân đoạn trong tham số 11 của giai đoạn 12Các truy vấn được bảo hiểm trong các cụm được phân đoạnKhi chạy trên 13, các chỉ mục chỉ có thể bao gồm các truy vấn trên các bộ sưu tập được phân đoạn nếu chỉ mục chứa khóa phân đoạn. Sharding Kích thước dữ liệu của bộ sưu tập hiện cóChỉ có thể chia nhỏ bộ sưu tập hiện có 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ọngCá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 0Ghi chúKích thước tài liệu BSON tối đa là 16MB hoặc 14 byteTất cả các chuyển đổi nên sử dụng tỷ lệ cơ sở 2, e. g. 1024 kilobyte = 1 megabyte Nếu 15 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ốiSau 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 Các thao tác sửa đổi tài liệu đơn lẻ trong các bộ sưu tập được phân đoạnTất cả các thao tác 16 và 17 cho một bộ sưu tập được phân đoạn chỉ định tùy chọn 18 hoặc 19 phải bao gồm khóa phân đoạn hoặc trường 22 trong đặc tả truy vấn. Các hoạt động của 16 và 17 chỉ định 18 hoặc 19 trong bộ sưu tập được phân đoạn không chứa khóa phân đoạn hoặc trường 22 trả về lỗiChỉ mục duy nhất trong bộ sưu tập phân đoạnMongoDB không hỗ trợ chỉ mục duy nhất trên các phân đoạn, 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ẹoNhìn thấyCác ràng buộc duy nhất trên các trường tùy ý cho một cách tiếp cận khác Số lượng tài liệu tối đa trên mỗi đoạn để di chuyểnTheo 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. 26 bao gồm trường 27, đại diện cho kích thước tài liệu trung bình trong bộ sưu tập. Đối với các khối quá lớn để di chuyển, bắt đầu từ MongoDB 4. 4
Hạn chế chính của ShardKích thước khóa phân mảnhBắ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ạnChỉ 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, một chỉ mục phức 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, . 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ướcCá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.
Trong MongoDB 4. 2 trở về trước, để thay đổi khóa phân đoạn
Đối với các cụm có khối lượng chèn cao, một 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 22, hãy lưu ý rằng các giá trị mặc định của trường 22 là các ObjectId thường có giá trị tăng dần. 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 độngThao tác sắp xếpNế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, thì 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 32 đọc tất cả các tài liệu đầu vào trước khi trả lại bất kỳ tài liệu đầu ra nào, chặn luồng dữ liệu cho truy vấn cụ thể đó. Nếu MongoDB yêu cầu sử dụng hơn 100 megabyte bộ nhớ hệ thống cho thao tác sắp xếp chặn, MongoDB sẽ trả về lỗi trừ khi truy vấn chỉ định 33 (Mới trong MongoDB 4. 4). 34 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ặnThay đổ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 Hoạt động đường ống tổng hợpBắt đầu từ MongoDB 6. 0, tham số 35 kiểm soát xem các giai đoạn đường ống có 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 hay không.
Giai đoạn tổng hợp Ví dụ về các giai đoạn có thể ghi tệp tạm thời vào đĩa khi allowDiskUse là 37 là
Ghi chúCác giai đoạn quy trình hoạt động trên các 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 Nếu kết quả của một trong các giai đoạn quy trình 52 của bạn vượt quá giới hạn, hãy xem xét thêm giai đoạn $limitBắt đầu từ MongoDB 4. 2, thông báo nhật ký hồ sơ và thông báo nhật ký chẩn đoán bao gồm chỉ báo 55 nếu bất kỳ giai đoạn tổng hợp nào ghi dữ liệu vào tệp tạm thời do giới hạn bộ nhớTổng hợp và mối quan tâm đã đọc
MẹoNhìn thấy
Đối với truy vấn hình cầu, hãy sử dụng kết quả chỉ mục 03. Việc sử dụng chỉ mục 07 cho các truy vấn hình cầu có thể dẫn đến kết quả không chính xác, chẳng hạn như việc sử dụng chỉ mục 07 cho các truy vấn hình cầu bao quanh các cựcTọa độ không gian địa lý
Đối với 75 hoặc 76, nếu bạn chỉ định một đa giác một vòng có diện tích lớn hơn một bán cầu đơn, hãy bao gồm biểu thức 77; . Đối với tất cả các đa giác GeoJSON khác có diện tích lớn hơn một bán cầu, truy vấn 75 hoặc 76 cho hình học bổ sung. Giao dịch nhiều tài liệuĐối với giao dịch nhiều tài liệu.
Thay đổi trong phiên bản 4. 4 Các hoạt động sau đây không được phép trong giao dịch
Giao dịch có giới hạn trọn đời như được chỉ định bởi 000. Mặc định là 60 giâyKích thước giới hạn lô lệnh ghi 001 lệnh ghi được cho phép trong một thao tác lô đơn lẻ, được xác định bởi một yêu cầu duy nhất tới máy chủ. Thay đổi trong phiên bản 3. 6. Giới hạn tăng từ 002 lên 001 ghi. Giới hạn này cũng áp dụng cho các thư 004 kế thừaCác hoạt động của 005 trong 02 và các phương thức tương đương trong trình điều khiển không có giới hạn này. Chế độ xemĐịnh nghĩa chế độ xem 007 không thể bao gồm giai đoạn 56 hoặc 61. Hạn chế này cũng áp dụng cho các đường ống nhúng, chẳng hạn như các đường ống được sử dụng trong giai đoạn 12 hoặc 011. Chế độ xem có các hạn chế hoạt động sau
Mới trong phiên bản 4. 4. 8-Hạn chế đường dẫn trường tiền tốBắt đầu trong MongoDB 4. 4, phép chiếu 012 và 020 không thể chiếu trường bắt đầu bằng 8 ngoại trừ các trường DBRef. Ví dụ: bắt đầu từ MongoDB 4. 4, thao tác sau không hợp lệ 2Trong phiên bản cũ hơn, MongoDB bỏ qua các phép chiếu trường có tiền tố 8. 8 Giới hạn vị trí của toán tử vị tríBắt đầu trong MongoDB 4. 4, toán tử chiếu 8 chỉ có thể xuất hiện ở cuối đường dẫn trường; . g. 025 hoặc 026. Ví dụ: bắt đầu từ MongoDB 4. 4, thao tác sau không hợp lệ 0Để giải quyết, hãy xóa thành phần của đường dẫn trường theo sau toán tử phép chiếu 8. Trong các phiên bản trước, MongoDB bỏ qua phần đường dẫn theo sau 8; . e. phép chiếu được coi là 029. Hạn chế chiếu tên trường trốngBắt đầu trong MongoDB 4. Phép chiếu 4, 012 và 020 không thể bao gồm phép chiếu tên trường trống. Ví dụ: bắt đầu từ MongoDB 4. 4, thao tác sau không hợp lệ 1Trong các phiên bản trước, MongoDB xử lý việc bao gồm/loại trừ trường trống vì nó sẽ chiếu 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 032 với các tài liệu chứa trường 033 0Bắt đầu từ MongoDB 4. 4, thao tác sau không thành công với lỗi 034 vì nó cố gắng chiếu cả tài liệu 033 và trường 036 0Trong 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
015 của một mảng và các trường nhúngBắt đầu trong MongoDB 4. 4, Phép chiếu 012 và 020 không thể chứa cả 015 của một mảng và một trường được nhúng trong mảng. Ví dụ: hãy xem xét một bộ sưu tập 032 có chứa một trường mảng 046 1Bắt đầu từ MongoDB 4. 4, thao tác sau không thành công với lỗi 034 0Trong các phiên bản trước, phép chiếu áp dụng cả hai phép chiếu và trả về phần tử đầu tiên ( 048) trong mảng 046 nhưng triệt tiêu trường 050 trong phần tử được chiếu. Bắt đầu từ MongoDB 4. 4, để đạt được kết quả tương tự, hãy sử dụng phương pháp 59 với hai giai đoạn 052 riêng biệt. 8 Toán tử vị trí và Hạn chế 015Bắt đầu trong MongoDB 4. 4, Phép chiếu 012 và 020 không thể bao gồm biểu thức phép chiếu 015 như một phần của biểu thức phép chiếu 8. Ví dụ: bắt đầu từ MongoDB 4. 4, thao tác sau không hợp lệ 0Trong các phiên bản trước, MongoDB trả về phần tử đầu tiên ( 059) trong mảng 046 khớp với điều kiện truy vấn; . e. phép chiếu vị trí 029 được ưu tiên và 062 không hoạt động. 063 không loại trừ bất kỳ trường tài liệu nào khácphiênSố phiên và giới hạn tên người dùng $externalĐể sử dụng Phiên khách hàng và Đảm bảo nhất quán nguyên nhân với người dùng xác thực 064 (Kerberos, LDAP hoặc x. 509 người dùng), tên người dùng không thể lớn hơn 10k byte. Hết thời gian chờ của phiên không hoạt độngCác phiên không nhận được thao tác đọc hoặc ghi trong 30 phút hoặc không được làm mới bằng cách sử dụng 065 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 . Đó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 066 hoặc 067 lớn hơn 30 phút. Hãy xem xét một ứng dụng phát hành một 068. Máy chủ trả về một con trỏ cùng với một lô tài liệu được xác định bởi 069 của 012. 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 hoạt động trả về một 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 071 và định kỳ làm mới phiên bằng cách sử dụng lệnh 065. Ví dụ 1Trong hoạt động ví dụ, phương pháp 068 được liên kết với một phiên rõ ràng. Con trỏ được cấu hình với 066 để ngăn máy chủ đóng con trỏ nếu không hoạt động. Vòng lặp 075 bao gồm một khối sử dụng 065 để làm mới phiên cứ sau 5 phút. Vì phiên sẽ không bao giờ vượt quá thời gian chờ 30 phút không hoạt động, nên con trỏ có thể vẫn mở vô thời hạn |