Hướng dẫn mongodb capacity planning - lập kế hoạch dung lượng mongodb

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

Show

Trên trang này

  • Tài liệu BSON
  • Đặt tên hạn chế
  • Đặt tên cảnh báo
  • Không gian tên
  • Chỉ mục
  • Loại
  • Dữ liệu
  • Bộ bản sao
  • Các cụm mảnh vỡ
  • Hoạt động
  • Phiên

Tài liệu này cung cấp một bộ sưu tập các hạn chế cứng và mềm của hệ thống MongoDB.

Tài liệu BSON Sizethe Maximum BSON Kích thước tài liệu là 16 megabyte.

The maximum BSON document size is 16 megabytes.

Kích thước tài liệu tối đa giúp đảm bảo rằng một tài liệu duy nhất không thể sử dụng lượng RAM quá mức hoặc, trong quá trình truyền, lượng băng thông quá mức. Để lưu trữ các tài liệu lớn hơn kích thước tối đa, MongoDB cung cấp API GridFS. Xem

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

0 và tài liệu cho trình điều khiển của bạn để biết thêm thông tin về GridFs.

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

0
and the documentation for your driver for more information about GridFS.

Độ sâu lồng nhau cho các tài liệu BSONMongoDB hỗ trợ không quá 100 cấp độ tổ cho các tài liệu BSON. Mỗi đối tượng hoặc mảng thêm một cấp độ.

MongoDB supports no more than 100 levels of nesting for BSON documents. Each object or array adds a level.

Sử dụng trường hợp trong cơ sở dữ liệu Tên không dựa vào trường hợp để phân biệt giữa cơ sở dữ liệu. Ví dụ: bạn không thể sử dụng hai cơ sở dữ liệu với các tên như,

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

1 và

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

2.

Do not rely on case to distinguish between databases. For example, you cannot use two databases with names like,

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

1 and

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

2.

Sau khi bạn tạo một cơ sở dữ liệu trong MongoDB, bạn phải sử dụng vốn hóa nhất quán khi bạn tham khảo nó. Ví dụ: nếu bạn tạo cơ sở dữ liệu

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

1, không đề cập đến nó bằng cách sử dụng vốn hóa thay thế như

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

4 hoặc

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

2.

Hạn chế đối với tên cơ sở dữ liệu cho các triển khai Windows cho MongoDB chạy trên Windows, tên cơ sở dữ liệu không thể chứa bất kỳ ký tự nào sau đây:

For MongoDB deployments running on Windows, database names cannot contain any of the following characters:

Ngoài ra tên cơ sở dữ liệu không thể chứa ký tự null.

Các hạn chế trên tên cơ sở dữ liệu cho các hệ thống UNIX và Linux cho các triển khai MongoDB chạy trên các hệ thống UNIX và Linux, tên cơ sở dữ liệu không thể chứa bất kỳ ký tự nào sau đây:

For MongoDB deployments running on Unix and Linux systems, database names cannot contain any of the following characters:

Ngoài ra tên cơ sở dữ liệu không thể chứa ký tự null.

Các hạn chế trên tên cơ sở dữ liệu cho các hệ thống UNIX và Linux cho các triển khai MongoDB chạy trên các hệ thống UNIX và Linux, tên cơ sở dữ liệu không thể chứa bất kỳ ký tự nào sau đây:

Database names cannot be empty and must have fewer than 64 characters.

Độ dài của tên cơ sở dữ liệu Tên cơ sở dữ liệu không thể trống và phải có ít hơn 64 ký tự.

Collection names should begin with an underscore or a letter character, and cannot:

  • Hạn chế đối với các tên nameScollection thu thập nên bắt đầu bằng một dấu gạch dưới hoặc ký tự chữ cái và không thể:

  • chứa

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    6.

  • là một chuỗi trống (ví dụ:

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    7).

  • chứa ký tự null.

Bắt đầu với tiền tố

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

8. (Dành riêng cho sử dụng nội bộ.)

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

0
or a similar method for your driver.

Nếu tên thu thập của bạn bao gồm các ký tự đặc biệt, chẳng hạn như ký tự dấu gạch dưới hoặc bắt đầu bằng các số, thì để truy cập bộ sưu tập sử dụng phương thức

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

9 trong

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

0 hoặc phương thức tương tự cho trình điều khiển của bạn.

  • Chiều dài không gian tên:

  • Đối với FeatureCompitionVersion được đặt thành

    db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

    1 trở lên, MongoDB làm tăng giới hạn cho các bộ sưu tập và chế độ xem không được che chắn lên 255 byte, và đến 235 byte cho các bộ sưu tập Sharded. Đối với một 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 chấm (

    db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

    2) và tên thu thập/xem (ví dụ:

    db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

    3),

Đối với featureCompitionVersion được đặt thành

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

4 hoặc sớm hơn, độ dài tối đa của các bộ sưu tập không được che chắn và xem không gian tên vẫn còn 120 byte và 100 byte cho bộ sưu tập bị che phủ.
  • Field names cannot contain the

    db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

    5 character.

  • Hạn chế trên tên trường Tên trường không thể chứa ký tự

    db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

    5.

  • Máy chủ cho phép lưu trữ các tên trường chứa các dấu chấm (

    db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

    2) và dấu hiệu đô la (

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    6).

MongoDB 5.0 bổ sung hỗ trợ cải tiến cho việc sử dụng (

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

6) và (

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

2) trong tên trường. Có một số hạn chế. Xem xem xét tên trường để biết thêm chi tiết.

The field name

db.inventory.find( { }, { "": 0 } ) // Invalid starting in 4.4

0 is reserved for use as a primary key; its value must be unique in the collection, is immutable, and may be of any type other than an array. If the

db.inventory.find( { }, { "": 0 } ) // Invalid starting in 4.4

0 contains subfields, the subfield names cannot begin with a (

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

6) symbol.

Các hạn chế đối với _idthe tên trường db.inventory.find( { }, { "": 0 } ) // Invalid starting in 4.40 được dành riêng để sử dụng làm khóa chính; Giá trị của nó phải là duy nhất trong bộ sưu tập, là bất biến và có thể thuộc bất kỳ loại nào khác ngoài một mảng. Nếu db.inventory.find( { }, { "": 0 } ) // Invalid starting in 4.40 chứa các trường con, tên trường con không thể bắt đầu bằng biểu tượng (db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.46).

Cảnh báo

Sử dụng 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 dữ liệu hoặc tham nhũng.

Ngôn ngữ truy vấn MongoDB không được xác định đối với các tài liệu có tên trường trùng lặp. Các nhà xây dựng BSON có thể hỗ trợ tạo tài liệu BSON với tên trường trùng lặp. Mặc dù BSON Builder có thể không mắc lỗi, 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 một tài liệu BSON với tên trường trùng lặp thông qua trình điều khiển MongoDB có thể dẫn đến việc người lái âm thầm bỏ các giá trị trùng lặp trước khi chèn.

db.inventory.find( { }, { "": 0 } ) // Invalid starting in 4.4

5 and

db.inventory.find( { }, { "": 0 } ) // Invalid starting in 4.4

6
may not work as expected in some situations with field names that make use of these characters.

Bắt đầu từ MongoDB 5.0, tên trường tài liệu có thể là tiền tố đô la (

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

6) và có thể chứa các khoảng thời gian (

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

2). Tuy nhiên,

db.inventory.find( { }, { "": 0 } ) // Invalid starting in 4.4

5 và

db.inventory.find( { }, { "": 0 } ) // Invalid starting in 4.4

6 có thể không hoạt động như mong đợi trong một số tình huống với tên trường sử dụng các ký tự này.

MongoDB mở rộng JSON V2 không thể phân biệt giữa các gói gói và trường xảy ra có cùng tên với trình bao bọc loại. Không sử dụng các định dạng JSON mở rộng trong các bối cảnh trong đó các biểu diễn BSON tương ứng có thể bao gồm các khóa có tiền tố Dollar (

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

6). Cơ chế DBREF là một ngoại lệ cho quy tắc chung này.

db.inventory.find( { }, { "": 0 } ) // Invalid starting in 4.4

5
and

db.inventory.find( { }, { "": 0 } ) // Invalid starting in 4.4

6
with periods (

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

2) in field names. Since CSV files use the period (

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

2) to represent data hierarchies, a period (

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

2) in a field name will be misinterpreted as a level of nesting.

Có một cơ hội nhỏ để mất dữ liệu khi sử dụng Dollar (

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

6) tên trường hoặc tên trường có chứa các khoảng thời gian (

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

2) nếu các tên trường này được sử dụng cùng với các chữ viết không được biết .

Khi chạy Chèn, Cập nhật và FindAndModify các lệnh, trình điều khiển có khả năng loại bỏ 5.0 Tương thích khi sử dụng các tài liệu có tên trường có tiền tố Dollar (

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

6) hoặc chứa các khoảng thời gian (

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

2). Các tên trường này đã tạo ra một 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 xóa bất kể phiên bản máy chủ mà trình điều khiển được kết nối. Nếu trình điều khiển 5.0 gửi tài liệu đến máy chủ cũ, tài liệu sẽ bị từ chối mà không gửi lỗi.

Không gian tên chiều dài cho tính năng tương tự FeatureCompition được đặt thành

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

1 trở lên, MongoDB làm tăng giới hạn cho các bộ sưu tập và chế độ xem không được che chắn lên 255 byte, và đến 235 byte cho các bộ sưu tập được che phủ. Đối với một 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 chấm (

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

2) và tên thu thập/xem (ví dụ:

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

3),
  • For featureCompatibilityVersion set to

    db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

    1 or greater, MongoDB raises the limit for unsharded collections and views to 255 bytes, and to 235 bytes for sharded collections. For a collection or a view, the namespace includes the database name, the dot (

    db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

    2) separator, and the collection/view name (e.g.

    db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

    3),

  • Đối với featureCompitionVersion được đặt thành

    db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

    4 hoặc sớm hơn, độ dài tối đa của các bộ sưu tập không được che chắn và xem không gian tên vẫn còn 120 byte và 100 byte cho bộ sưu tập bị che phủ.

Mẹo

Xem thêm:

Giới hạn khóa chỉ mục

Ghi chú

Đã thay đổi trong phiên bản 4.2

Đối với MongoDB 2.6 thông qua các phiên bản MongoDB với FCV được đặt thành

db.inventory.find( {}, { size: 1, "size.uom": 1 } ) // Invalid starting in 4.4

2 hoặc sớm hơn, tổng kích thước của một mục nhập chỉ số, 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 giới hạn khóa chỉ mục áp dụng:Index Key Limit applies:

  • MongoDB sẽ không tạo một chỉ mục trên bộ sưu tập nếu mục nhập chỉ mục cho một tài liệu hiện có vượt quá giới hạn khóa chỉ mục.not create an index on a collection if the index entry for an existing document exceeds the index key limit.

  • Các hoạt động tái lập sẽ xảy ra lỗi nếu mục nhập chỉ mục cho một 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 tái hiện xảy ra như là một phần của lệnh

    db.inventory.find( {}, { size: 1, "size.uom": 1 } ) // Invalid starting in 4.4

    3 cũng như phương thức

    db.inventory.find( {}, { size: 1, "size.uom": 1 } ) // Invalid starting in 4.4

    4.index key limit. Reindexing operations occur as part of the

    db.inventory.find( {}, { size: 1, "size.uom": 1 } ) // Invalid starting in 4.4

    3 command as well as the

    db.inventory.find( {}, { size: 1, "size.uom": 1 } ) // Invalid starting in 4.4

    4 method.

    Bởi vì các hoạt động này giảm tất cả các chỉ mục từ một bộ sưu tập và sau đó tái tạo chúng theo tuần tự, lỗi từ giới hạn khóa chỉ mục ngăn các hoạt động này xây dựng lại bất kỳ chỉ mục còn lại nào cho bộ sưu tập.index key limit prevents these operations from rebuilding any remaining indexes for the collection.

  • MongoDB sẽ không chèn vào một 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 và thay vào đó, sẽ trả về một lỗi. 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 đó.index key limit, and instead, will return an error. Previous versions of MongoDB would insert but not index such documents.

  • Cập nhật cho trường được lập chỉ mục sẽ 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.index key limit.

    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, bất kỳ bản cập nhật nào dẫn đến việc di dời tài liệu đó trên đĩa sẽ xảy ra lỗi.

  • db.inventory.find( {}, { size: 1, "size.uom": 1 } ) // Invalid starting in 4.4

    5 và

    db.inventory.find( { }, { "": 0 } ) // Invalid starting in 4.4

    5 sẽ không chèn các tài liệu có chứa một 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. and

    db.inventory.find( { }, { "": 0 } ) // Invalid starting in 4.4

    5
    will not insert documents that contain an indexed field whose corresponding index entry would exceed the index key limit.

  • Trong MongoDB 2.6, các thành viên thứ cấp của các bộ bản sao sẽ tiếp tục sao chép các tài liệu với một 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 trong nhật ký.index key limit on initial sync but will print warnings in the logs.

    Các thành viên thứ cấp 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 một bộ sưu tập chứa một 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 các cảnh báo trong nhật ký.index key limit but with warnings in the logs.

    Với các bộ bản sao phiên bản hỗn hợp trong đó các thứ hai là phiên bản 2.6 và chính là phiên bản 2.4, các phần hai sẽ sao chép các tài liệu được chèn hoặc cập nhật trên chính 2.4 giới hạn khóa chỉ mục.index key limit.

  • Đối với các bộ sưu tập Sharded hiện tại, di chuyển chunk sẽ thất bại nếu đoạn có một tài liệu 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 khóa chỉ mục.index key limit.

Số lượng chỉ mục trên mỗi bộ sưu tập bộ sưu tập có thể có không quá 64 chỉ mục.

A single collection can have no more than 64 indexes.

Độ dài tên chỉ mục

Ghi chú

Đã thay đổi trong phiên bản 4.2

Đối với MongoDB 2.6 thông qua các phiên bản MongoDB với FCV được đặt thành

db.inventory.find( {}, { size: 1, "size.uom": 1 } ) // Invalid starting in 4.4

2 hoặc sớm hơn, tổng kích thước của một mục nhập chỉ số, 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 giới hạn khóa chỉ mục áp dụng:

MongoDB sẽ không tạo một chỉ mục trên bộ sưu tập nếu mục nhập chỉ mục cho một tài liệu hiện có vượt quá giới hạn khóa chỉ mục.

There can be no more than 32 fields in a compound index.

Các hoạt động tái lập sẽ xảy ra lỗi nếu mục nhập chỉ mục cho một 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 tái hiện xảy ra như là một phần của lệnh

db.inventory.find( {}, { size: 1, "size.uom": 1 } ) // Invalid starting in 4.4

3 cũng như phương thức

db.inventory.find( {}, { size: 1, "size.uom": 1 } ) // Invalid starting in 4.4

4.

You cannot combine the

{ ..., instock: [ { warehouse: "A", qty: 35 }, { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ], ... }

2 query, which requires a special text index, with a query operator that requires a different type of special index. For example you cannot combine

{ ..., instock: [ { warehouse: "A", qty: 35 }, { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ], ... }

2 query with the

{ ..., instock: [ { warehouse: "A", qty: 35 }, { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ], ... }

4 operator.

Các trường có chỉ mục 2DSphere chỉ có thể giữ các trường hình học với các chỉ mục 2DSphere phải giữ dữ liệu hình học dưới dạng các 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 với dữ liệu phi hình học trong trường

{ ..., instock: [ { warehouse: "A", qty: 35 }, { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ], ... }

5 được lập chỉ mục hoặc xây dựng chỉ mục

{ ..., instock: [ { warehouse: "A", qty: 35 }, { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ], ... }

5 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, hoạt động sẽ không thành công.

Fields with 2dsphere indexes must hold geometry data in the form of coordinate pairs or GeoJSON data. If you attempt to insert a document with non-geometry data in a

{ ..., instock: [ { warehouse: "A", qty: 35 }, { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ], ... }

5 indexed field, or build a

{ ..., instock: [ { warehouse: "A", qty: 35 }, { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ], ... }

5 index on a collection where the indexed field has non-geometry data, the operation will fail.

Mẹo

Xem thêm:

Số lượng hạn chế của KeySto chỉ số 2DSPHERE tạo các khóa cho chỉ số 2DSphere,

{ ..., instock: [ { warehouse: "A", qty: 35 }, { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ], ... }

7 Bản đồ hình dạng Geojson cho biểu diễn nội bộ. Các biểu diễn nội bộ kết quả có thể là một loạt các giá trị lớn.

To generate keys for a 2dsphere index,

{ ..., instock: [ { warehouse: "A", qty: 35 }, { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ], ... }

7 maps GeoJSON shapes to an internal representation. The resulting internal representation may be a large array of values.

Khi

{ ..., instock: [ { warehouse: "A", qty: 35 }, { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ], ... }

7 tạo các phím chỉ mục trên một trường giữ một mảng,

{ ..., instock: [ { warehouse: "A", qty: 35 }, { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ], ... }

7 sẽ tạo khóa chỉ mục cho mỗi phần tử mảng. Đối với các chỉ số hợp chất,

{ ..., instock: [ { warehouse: "A", qty: 35 }, { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ], ... }

7 tính toán sản phẩm Cartesian của các bộ khóa được tạo cho mỗi trường. Nếu cả hai bộ đều lớn, thì việc tính toán sản phẩm Cartesian có thể khiến hoạt động vượt quá giới hạn bộ nhớ.

db.inventory.find( {}, { "instock": { $slice: 1 }, "instock.warehouse": 0 } ) // Invalid starting in 4.4

1 Giới hạn số lượng khóa tối đa được tạo cho một tài liệu duy nhất để ngăn chặn các lỗi bộ nhớ. Mặc định là các phím chỉ số 100000 cho 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ố

db.inventory.find( {}, { "instock": { $slice: 1 }, "instock.warehouse": 0 } ) // Invalid starting in 4.4

1 chỉ định, thì thao tác sẽ không thành công.

Các giá trị NAN được trả về từ các truy vấn được bảo hiểm bởi công cụ lưu trữ WiredTiger luôn loại hình đôi 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à ____73, loại giá trị

db.inventory.find( {}, { "instock": { $slice: 1 }, "instock.warehouse": 0 } ) // Invalid starting in 4.4

3 đó luôn luôn là

db.inventory.find( {}, { "instock": { $slice: 1 }, "instock.warehouse": 0 } ) // Invalid starting in 4.4

5.

If the value of a field returned from a query that is covered by an index is

db.inventory.find( {}, { "instock": { $slice: 1 }, "instock.warehouse": 0 } ) // Invalid starting in 4.4

3, the type of that

db.inventory.find( {}, { "instock": { $slice: 1 }, "instock.warehouse": 0 } ) // Invalid starting in 4.4

3 value is always

db.inventory.find( {}, { "instock": { $slice: 1 }, "instock.warehouse": 0 } ) // Invalid starting in 4.4

5.

Các chỉ mục MultiKey IndexMultikey không thể bao gồm các truy vấn trên (các) trường mảng.

Multikey indexes cannot cover queries over array field(s).

Chỉ số chỉ số không gian địa chỉ không thể bao gồm một truy vấn.

Geospatial indexes cannot cover a query.

Việc sử dụng bộ nhớ trong Index Builds ____76 hỗ trợ việc xây dựng một hoặc nhiều chỉ mục trên bộ sưu tập.

db.inventory.find( {}, { "instock": { $slice: 1 }, "instock.warehouse": 0 } ) // Invalid starting in 4.4

6 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 các bản dựng chỉ mục. Giới hạn mặc định về việc sử dụng bộ nhớ cho

db.inventory.find( {}, { "instock": { $slice: 1 }, "instock.warehouse": 0 } ) // Invalid starting in 4.4

6 là 200 megabyte (cho phiên bản 4.2.3 trở lên) và 500 (cho phiên bản 4.2.2 trở lên), được chia sẻ giữa tất cả các chỉ mục được xây dựng bằng một lệnh

db.inventory.find( {}, { "instock": { $slice: 1 }, "instock.warehouse": 0 } ) // Invalid starting in 4.4

6. Sau khi đạt đến giới hạn bộ nhớ,

db.inventory.find( {}, { "instock": { $slice: 1 }, "instock.warehouse": 0 } ) // Invalid starting in 4.4

6 sử dụng các tệp đĩa tạm thời trong một thư mục con có tên

db.inventory.find( { "instock.qty": { $gt: 25 } }, { "instock.$": { $slice: 1 } } ) // Invalid starting in 4.4

1 trong thư mục

db.inventory.find( { "instock.qty": { $gt: 25 } }, { "instock.$": { $slice: 1 } } ) // Invalid starting in 4.4

2 để hoàn thành bản dựng.

db.inventory.find( {}, { "instock": { $slice: 1 }, "instock.warehouse": 0 } ) // Invalid starting in 4.4

6 supports building one or more indexes on a collection.

db.inventory.find( {}, { "instock": { $slice: 1 }, "instock.warehouse": 0 } ) // Invalid starting in 4.4

6 uses a combination of memory and temporary files on disk to complete index builds. The default limit on memory usage for

db.inventory.find( {}, { "instock": { $slice: 1 }, "instock.warehouse": 0 } ) // Invalid starting in 4.4

6 is 200 megabytes (for versions 4.2.3 and later) and 500 (for versions 4.2.2 and earlier), shared between all indexes built using a single

db.inventory.find( {}, { "instock": { $slice: 1 }, "instock.warehouse": 0 } ) // Invalid starting in 4.4

6 command. Once the memory limit is reached,

db.inventory.find( {}, { "instock": { $slice: 1 }, "instock.warehouse": 0 } ) // Invalid starting in 4.4

6 uses temporary disk files in a subdirectory named

db.inventory.find( { "instock.qty": { $gt: 25 } }, { "instock.$": { $slice: 1 } } ) // Invalid starting in 4.4

1 within the

db.inventory.find( { "instock.qty": { $gt: 25 } }, { "instock.$": { $slice: 1 } } ) // Invalid starting in 4.4

2 directory to complete the build.

Bạn có thể ghi đè giới hạn bộ nhớ bằng cách đặt tham số máy chủ

db.inventory.find( { "instock.qty": { $gt: 25 } }, { "instock.$": { $slice: 1 } } ) // Invalid starting in 4.4

3. Đặt giới hạn bộ nhớ cao hơn có thể dẫn đến việc hoàn thành các bản dựng chỉ mục nhanh hơn. Tuy nhiên, việc đặt giới hạn này quá cao so với RAM không 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.

  • Đối với phiên bản tương thích tính năng (FCV)

    db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

    4, giới hạn bộ nhớ xây dựng chỉ mục áp dụng cho tất cả các bản dựng chỉ mục.

  • Đối với phiên bản tương thích tính năng (FCV)

    db.inventory.find( {}, { size: 1, "size.uom": 1 } ) // Invalid starting in 4.4

    2, 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 tiền cảnh.

Các bản dựng chỉ mục có thể được bắt đầu bởi một lệnh người dùng như tạo chỉ mục hoặc bằng một quy trình quản trị như đồng bộ hóa ban đầu. Cả hai đều phải tuân theo giới hạn được đặt bởi

db.inventory.find( { "instock.qty": { $gt: 25 } }, { "instock.$": { $slice: 1 } } ) // Invalid starting in 4.4

3

Một hoạt động đồng bộ ban đầu chỉ có 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 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

db.inventory.find( { "instock.qty": { $gt: 25 } }, { "instock.$": { $slice: 1 } } ) // Invalid starting in 4.4

3

Mẹo

Để giảm thiểu tác động của việc xây dựng một chỉ mục đối với các bộ bản sao và các cụm được che phủ với các mảnh ghép bản sao, hãy sử dụng quy trình xây dựng chỉ số cuộn như được mô tả trên các bản dựng chỉ mục cuộn trên các bộ bản sao.

Đối chiếu và chỉ số đánh máy sau các loại chỉ mục chỉ hỗ trợ so sánh nhị phân đơn giản và không hỗ trợ đối chiếu:

The following index types only support simple binary comparison and do not support collation:

  • chỉ mục văn bản,

  • Chỉ số 2D và

  • GEOHAYSTACK INDEXES.

Mẹo

Để tạo một chỉ mục

db.inventory.find( { "instock.qty": { $gt: 25 } }, { "instock.$": { $slice: 1 } } ) // Invalid starting in 4.4

8,

db.inventory.find( { "instock.qty": { $gt: 25 } }, { "instock.$": { $slice: 1 } } ) // Invalid starting in 4.4

9 hoặc
var session = db.getMongo().startSession()
var sessionId = session.getSessionId().id
var cursor = session.getDatabase("examples").getCollection("data").find().noCursorTimeout()
var refreshTimestamp = new Date() // take note of time at operation start
while (cursor.hasNext()) {
// Check if more than 5 minutes have passed since the last refresh
if ( (new Date()-refreshTimestamp)/1000 > 300 ) {
print("refreshing session")
db.adminCommand({"refreshSessions" : [sessionId]})
refreshTimestamp = new Date()
}
// process cursor normally
}
0 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
var session = db.getMongo().startSession()
var sessionId = session.getSessionId().id
var cursor = session.getDatabase("examples").getCollection("data").find().noCursorTimeout()
var refreshTimestamp = new Date() // take note of time at operation start
while (cursor.hasNext()) {
// Check if more than 5 minutes have passed since the last refresh
if ( (new Date()-refreshTimestamp)/1000 > 300 ) {
print("refreshing session")
db.adminCommand({"refreshSessions" : [sessionId]})
refreshTimestamp = new Date()
}
// process cursor normally
}
1 khi tạo chỉ mục.

Hidden Indexesyou không thể ẩn chỉ mục

db.inventory.find( { }, { "": 0 } ) // Invalid starting in 4.4

0.
  • You cannot hide the

    db.inventory.find( { }, { "": 0 } ) // Invalid starting in 4.4

    0 index.

  • Bạn không thể sử dụng

    var session = db.getMongo().startSession()
    var sessionId = session.getSessionId().id
    var cursor = session.getDatabase("examples").getCollection("data").find().noCursorTimeout()
    var refreshTimestamp = new Date() // take note of time at operation start
    while (cursor.hasNext()) {
    // Check if more than 5 minutes have passed since the last refresh
    if ( (new Date()-refreshTimestamp)/1000 > 300 ) {
    print("refreshing session")
    db.adminCommand({"refreshSessions" : [sessionId]})
    refreshTimestamp = new Date()
    }
    // process cursor normally
    }
    3 trên một chỉ mục ẩn.

Số lượng phím sắp xếp tối đa bạn có thể sắp xếp tối đa 32 khóa.

You can sort on a maximum of 32 keys.

Số lượng tài liệu tối đa trong bộ sưu tập giới hạn Nếu bạn chỉ định số lượng tài liệu tối đa trong bộ sưu tập giới hạn với tham số
var session = db.getMongo().startSession()
var sessionId = session.getSessionId().id
var cursor = session.getDatabase("examples").getCollection("data").find().noCursorTimeout()
var refreshTimestamp = new Date() // take note of time at operation start
while (cursor.hasNext()) {
// Check if more than 5 minutes have passed since the last refresh
if ( (new Date()-refreshTimestamp)/1000 > 300 ) {
print("refreshing session")
db.adminCommand({"refreshSessions" : [sessionId]})
refreshTimestamp = new Date()
}
// process cursor normally
}
5 của ____ 94, giá trị phải nhỏ hơn 2 31 tài liệu.

If you specify the maximum number of documents in a capped collection with

var session = db.getMongo().startSession()
var sessionId = session.getSessionId().id
var cursor = session.getDatabase("examples").getCollection("data").find().noCursorTimeout()
var refreshTimestamp = new Date() // take note of time at operation start
while (cursor.hasNext()) {
// Check if more than 5 minutes have passed since the last refresh
if ( (new Date()-refreshTimestamp)/1000 > 300 ) {
print("refreshing session")
db.adminCommand({"refreshSessions" : [sessionId]})
refreshTimestamp = new Date()
}
// process cursor normally
}
4's
var session = db.getMongo().startSession()
var sessionId = session.getSessionId().id
var cursor = session.getDatabase("examples").getCollection("data").find().noCursorTimeout()
var refreshTimestamp = new Date() // take note of time at operation start
while (cursor.hasNext()) {
// Check if more than 5 minutes have passed since the last refresh
if ( (new Date()-refreshTimestamp)/1000 > 300 ) {
print("refreshing session")
db.adminCommand({"refreshSessions" : [sessionId]})
refreshTimestamp = new Date()
}
// process cursor normally
}
5 parameter, the value must be less than 2 31 documents.

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, không có giới hạn về số lượng tài liệu.

Số lượng thành viên của một bộ setreplica bản sao có thể có tối đa 50 thành viên.

Replica sets can have up to 50 members.

Số lượng thành viên bỏ phiếu của một bộ setreplica bản sao có thể có tối đa 7 thành viên bỏ phiếu. Đối với các bộ bản sao với hơn 7 tổng số thành viên, xem các thành viên không bỏ phiếu.

Replica sets can have up to 7 voting members. For replica sets with more than 7 total members, see Non-Voting Members.

Kích thước tối đa của oplogif tự động tạo ra, bạn không chỉ định rõ ràng kích thước oplog (nghĩa là với
var session = db.getMongo().startSession()
var sessionId = session.getSessionId().id
var cursor = session.getDatabase("examples").getCollection("data").find().noCursorTimeout()
var refreshTimestamp = new Date() // take note of time at operation start
while (cursor.hasNext()) {
// Check if more than 5 minutes have passed since the last refresh
if ( (new Date()-refreshTimestamp)/1000 > 300 ) {
print("refreshing session")
db.adminCommand({"refreshSessions" : [sessionId]})
refreshTimestamp = new Date()
}
// process cursor normally
}
6 hoặc
var session = db.getMongo().startSession()
var sessionId = session.getSessionId().id
var cursor = session.getDatabase("examples").getCollection("data").find().noCursorTimeout()
var refreshTimestamp = new Date() // take note of time at operation start
while (cursor.hasNext()) {
// Check if more than 5 minutes have passed since the last refresh
if ( (new Date()-refreshTimestamp)/1000 > 300 ) {
print("refreshing session")
db.adminCommand({"refreshSessions" : [sessionId]})
refreshTimestamp = new Date()
}
// process cursor normally
}
7) MongoDB sẽ tạo ra một oplog không lớn hơn 50 gigabyte. [1]

If you do not explicitly specify an oplog size (i.e. with

var session = db.getMongo().startSession()
var sessionId = session.getSessionId().id
var cursor = session.getDatabase("examples").getCollection("data").find().noCursorTimeout()
var refreshTimestamp = new Date() // take note of time at operation start
while (cursor.hasNext()) {
// Check if more than 5 minutes have passed since the last refresh
if ( (new Date()-refreshTimestamp)/1000 > 300 ) {
print("refreshing session")
db.adminCommand({"refreshSessions" : [sessionId]})
refreshTimestamp = new Date()
}
// process cursor normally
}
6 or
var session = db.getMongo().startSession()
var sessionId = session.getSessionId().id
var cursor = session.getDatabase("examples").getCollection("data").find().noCursorTimeout()
var refreshTimestamp = new Date() // take note of time at operation start
while (cursor.hasNext()) {
// Check if more than 5 minutes have passed since the last refresh
if ( (new Date()-refreshTimestamp)/1000 > 300 ) {
print("refreshing session")
db.adminCommand({"refreshSessions" : [sessionId]})
refreshTimestamp = new Date()
}
// process cursor normally
}
7) MongoDB will create an oplog that is no larger than 50 gigabytes. [1]

Các cụm Sharded có các hạn chế và ngưỡng được mô tả ở đây.

Hoạt động không có sẵn trong môi trường bị che khuất ____998 không cho phép tham chiếu đến đối tượng
var session = db.getMongo().startSession()
var sessionId = session.getSessionId().id
var cursor = session.getDatabase("examples").getCollection("data").find().noCursorTimeout()
var refreshTimestamp = new Date() // take note of time at operation start
while (cursor.hasNext()) {
// Check if more than 5 minutes have passed since the last refresh
if ( (new Date()-refreshTimestamp)/1000 > 300 ) {
print("refreshing session")
db.adminCommand({"refreshSessions" : [sessionId]})
refreshTimestamp = new Date()
}
// process cursor normally
}
9 từ hàm
var session = db.getMongo().startSession()
var sessionId = session.getSessionId().id
var cursor = session.getDatabase("examples").getCollection("data").find().noCursorTimeout()
var refreshTimestamp = new Date() // take note of time at operation start
while (cursor.hasNext()) {
// Check if more than 5 minutes have passed since the last refresh
if ( (new Date()-refreshTimestamp)/1000 > 300 ) {
print("refreshing session")
db.adminCommand({"refreshSessions" : [sessionId]})
refreshTimestamp = new Date()
}
// process cursor normally
}
8. Đây là không phổ biến trong các bộ sưu tập không có vỏ.

var session = db.getMongo().startSession()
var sessionId = session.getSessionId().id
var cursor = session.getDatabase("examples").getCollection("data").find().noCursorTimeout()
var refreshTimestamp = new Date() // take note of time at operation start
while (cursor.hasNext()) {
// Check if more than 5 minutes have passed since the last refresh
if ( (new Date()-refreshTimestamp)/1000 > 300 ) {
print("refreshing session")
db.adminCommand({"refreshSessions" : [sessionId]})
refreshTimestamp = new Date()
}
// process cursor normally
}
8 does not permit references to the
var session = db.getMongo().startSession()
var sessionId = session.getSessionId().id
var cursor = session.getDatabase("examples").getCollection("data").find().noCursorTimeout()
var refreshTimestamp = new Date() // take note of time at operation start
while (cursor.hasNext()) {
// Check if more than 5 minutes have passed since the last refresh
if ( (new Date()-refreshTimestamp)/1000 > 300 ) {
print("refreshing session")
db.adminCommand({"refreshSessions" : [sessionId]})
refreshTimestamp = new Date()
}
// process cursor normally
}
9 object from the
var session = db.getMongo().startSession()
var sessionId = session.getSessionId().id
var cursor = session.getDatabase("examples").getCollection("data").find().noCursorTimeout()
var refreshTimestamp = new Date() // take note of time at operation start
while (cursor.hasNext()) {
// Check if more than 5 minutes have passed since the last refresh
if ( (new Date()-refreshTimestamp)/1000 > 300 ) {
print("refreshing session")
db.adminCommand({"refreshSessions" : [sessionId]})
refreshTimestamp = new Date()
}
// process cursor normally
}
8 function. This is uncommon in un-sharded collections.

Lệnh

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

01 không được hỗ trợ trong môi trường bị che khuất.

Trong MongoDB 5.0 trở lên, bạn không thể chỉ định các bộ sưu tập Sharded trong tham số

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

02 của các giai đoạn

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

03.

Các truy vấn được bảo hiểm trong các cụm được phân loại trong MongoDB 3.0, một chỉ mục không thể bao gồm một truy vấn trên bộ sưu tập Sharded khi chạy chống lại

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

04 nếu chỉ mục không chứa phím Shard.

Starting in MongoDB 3.0, an index cannot cover a query on a sharded collection when run against a

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

04 if the index does not contain the shard key.

Trong các phiên bản trước, một chỉ mục không thể bao gồm một truy vấn trên bộ sưu tập Sharded khi chạy chống lại

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

04

Việc thu thập dữ liệu bộ sưu tập hiện có Bộ sưu tập hiện tại của SIZEAN 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 Shard và kích thước chunk được cấu hình.

An existing collection can only be sharded if its size does not exceed specific limits. These limits can be estimated based on the average size of all shard key values, and the configured chunk size.

Quan trọng

Những giới hạn này chỉ áp dụng cho hoạt động Sharding ban đầu. Các bộ sưu tập Sharded có thể phát triển đến mọi kích thước sau khi cho phép Sharding thành công.

Sử dụng các công thức sau để tính toán kích thước thu thập tối đa lý thuyết.

maxSplits = 16777216 (bytes) / <average size of shard key values in bytes>
maxCollectionSize (MB) = maxSplits * (chunkSize / 2)

Ghi chú

Kích thước tài liệu BSON tối đa là 16MB hoặc

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

06 byte.

Tất cả các chuyển đổi nên sử dụng thang đo Base-2, ví dụ: 1024 kilobyte = 1 megabyte.

Nếu

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

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 chunk để đảm bảo thu hẹp ban đầu thành công. Nếu có nghi ngờ về việc liệu kết quả của tính toán có quá 'gần' với kích thước thu thập mục tiêu hay không, thì có khả năng tốt hơn là tăng kích thước chunk.

Sau khi thu nhỏ thành công, bạn có thể giảm kích thước chunk khi cần thiết. Nếu sau đó bạn giảm kích thước chunk, có thể mất thời gian để tất cả các khối phân chia theo kích thước mới. Xem Sửa đổi kích thước chunk trong một cụm mảnh để hướng dẫn sửa đổi kích thước chunk.

Bảng này minh họa các 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 Shard

512 byte

256 byte

128 byte

64 byte

Số lượng phân tách 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 chunk 64 MB)

1 tb

2 TB

4 tb

8 tb

Kích thước bộ sưu tập tối đa (kích thước chunk 128 MB)

2 TB

4 tb

8 tb

Kích thước bộ sưu tập tối đa (kích thước chunk 128 MB)

16 tb

4 tb

8 tb

Kích thước bộ sưu tập tối đa (kích thước chunk 128 MB)

16 tb

Kích thước bộ sưu tập tối đa (kích thước chunk 256 MB)

All

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

08 and

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

09 operations for a sharded collection that specify the

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

10 or

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

11 option must include the shard key or the

db.inventory.find( { }, { "": 0 } ) // Invalid starting in 4.4

0 field in the query specification.

32 TB

Các hoạt động sửa đổi tài liệu duy nhất trong các hoạt động của Bộ sưu tập Sharded

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

08 và

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

09 cho một bộ sưu tập Sharded chỉ định tùy chọn

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

10 hoặc

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

11 phải bao gồm khóa Shard hoặc trường

db.inventory.find( { }, { "": 0 } ) // Invalid starting in 4.4

0 trong đặc tả truy vấn.

MongoDB does not support unique indexes across shards, except when the unique index contains the full shard key as a prefix of the index. In these situations MongoDB will enforce uniqueness across the full key, not a single field.

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.408 và db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.409 Các hoạt động Chỉ định db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.410 hoặc db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.411 trong bộ sưu tập Sharded không chứa khóa Shard hoặc trường db.inventory.find( { }, { "": 0 } ) // Invalid starting in 4.40 trả về lỗi.

Các chỉ mục duy nhất trong bộ sưu tập Sharded không hỗ trợ các chỉ mục duy nhất trên các mảnh vỡ, ngoại trừ khi chỉ mục duy nhất chứa khóa Shard đầy đủ dưới dạng tiền tố của chỉ mục. Trong những tình huống này MongoDB sẽ thực thi tính độc đáo trên toàn bộ khóa, không phải là một trường duy nhất.

Mẹo

By default, MongoDB cannot move a chunk if the number of documents in the chunk is greater than 1.3 times the result of dividing the configured chunk size by the average document size.

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

18 includes the

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

19 field, which represents the average document size in the collection.

Nhìn thấy:

  • Số lượng tài liệu tối đa cho mỗi đoạn để di chuyển mặc định, MongoDB không thể di chuyển một đoạn nếu số lượng tài liệu trong khối lớn hơn 1,3 lần so với kết quả của việc chia kích thước chunk được cấu hình cho kích thước tài liệu trung bình.

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    18 bao gồm trường

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    19, đại diện cho kích thước tài liệu trung bình trong bộ sưu tập.

  • Đối với những khối quá lớn để di chuyển, bắt đầu từ MongoDB 4.4:

Một cài đặt cân bằng mới

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

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 dá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.

Starting in version 4.4, MongoDB removes the limit on the shard key size.

Lệnh

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

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 được dán nhãn jumbo.

Shard Key Sizestarting Trong phiên bản 4.4, MongoDB sẽ loại bỏ giới hạn trên kích thước phím Shard.

A shard key index can be an ascending index on the shard key, a compound index that start with the shard key and specify ascending order for the shard key, or a hashed index.

Đối với MongoDB 4.2 và sớm hơn, khóa Shard không thể vượt quá 512 byte.

Chỉ số Keya Key Index Shard có thể là một chỉ số tăng dần trên phím Shard, một chỉ số ghép bắt đầu với phím Shard và chỉ định thứ tự tăng dần cho phím Shard hoặc chỉ số băm.

Your options for changing a shard key depend on the version of MongoDB that you are running:

  • Chỉ số khóa Shard không thể là một chỉ mục chỉ số chỉ mục đa năng, chỉ mục văn bản hoặc chỉ mục không gian địa chỉ trên các trường khóa Shard.

  • Lựa chọn khóa Shard là bất biến trong các tùy chọn MongoDB 4.2 và Earlieryour để thay đổi khóa Shard phụ thuộc vào phiên bản MongoDB mà bạn đang chạy:

  • Trong MongoDB 4.2 và trước đó, sự lựa chọn của Key Shard không thể thay đổi sau khi bỏ rơi.

Trong MongoDB 4.2 và sớm hơn, để thay đổi phím Shard:

  • Đổ tất cả dữ liệu từ MongoDB vào một định dạng bên ngoài.

  • Thả bộ sưu tập Sharded ban đầu.

  • Định cấu hình Sharding bằng khóa Shard mới.

  • Phân chia trước Phạm vi khóa Shard để đảm bảo phân phối ban đầu.

  • Khôi phục dữ liệu đã đổ vào MongoDB.

Các khóa Shard tăng đơn điệu có thể giới hạn thông lượng chèn cho các cụm có khối lượng chèn cao, một phím Shard với các phím tăng đơn điệu và giảm có thể ảnh hưởng đến thông lượng chèn. Nếu khóa Shard của bạn là trường

db.inventory.find( { }, { "": 0 } ) // Invalid starting in 4.4

0, hãy lưu ý rằng các giá trị mặc định của các trường

db.inventory.find( { }, { "": 0 } ) // Invalid starting in 4.4

0 là các đối tượng thường tăng các giá trị.

For clusters with high insert volumes, a shard key with monotonically increasing and decreasing keys can affect insert throughput. If your shard key is the

db.inventory.find( { }, { "": 0 } ) // Invalid starting in 4.4

0 field, be aware that the default values of the

db.inventory.find( { }, { "": 0 } ) // Invalid starting in 4.4

0 fields are ObjectIds which have generally increasing values.

Khi chèn các tài liệu với các phím Shard tăng đơn điệu, tất cả các phần chèn đều thuộc về cùng một khối trên một mảnh vỡ. Hệ thống cuối cùng phân chia phạm vi chunk nhận tất cả các hoạt động ghi và di chuyển nội dung của nó để phân phối dữ liệu đều hơn. Tuy nhiên, tại bất cứ lúc nào, cụm chỉ hướng các hoạt động chèn vào một mảnh vỡ duy nhất, tạo ra một nút cổ chai thông lượng.

Nếu các hoạt động trên cụm chủ yếu đọc các hoạt động 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 Shard băm hoặc chọn một trường không tăng hoặc giảm đơn điệu.

Các khóa băm và các chỉ số băm băm các khóa của các khóa có giá trị tăng dần.

Sắp xếp Operationsif MongoDB không thể sử dụng chỉ mục hoặc chỉ mục để có được thứ tự sắp xếp, MongoDB phải thực hiện thao tác phân loại chặn trên dữ liệu. Tên đề cập đến yêu cầu rằng giai đoạn

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

24 đọ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ể đó.

If MongoDB cannot use an index or indexes to obtain the sort order, MongoDB must perform a blocking sort operation on the data. The name refers to the requirement that the

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

24 stage reads all input documents before returning any output documents, blocking the flow of data for that specific query.

Nếu MongoDB yêu cầu sử dụng hơn 100 megabyte bộ nhớ hệ thống cho hoạt động sắp xếp chặn, MongoDB trả về lỗi trừ khi truy vấn chỉ định

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

25 (mới trong MongoDB 4.4).

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

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ý hoạt động sắp xếp chặn.

Đã thay đổi trong phiên bản 4.4: Đối với MongoDB 4.2 và trước đó, việc chặn các hoạt động sắp xếp không thể vượt quá 32 megabyte của bộ nhớ hệ thống.

Để biết thêm thông tin về các loại và sử dụng chỉ mục, xem Sắp xếp và sử dụng chỉ mục.

Tập hợp Pipeline Hoạt động khởi động trong MongoDB 6.0, tham số

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

27 có 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 các tệp tạm thời để đĩa theo đĩa theo mặc định hay không.

Starting in MongoDB 6.0, the

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

27 parameter controls whether pipeline stages that require more than 100 megabytes of memory to execute write temporary files to disk by default.

  • Nếu

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    27 được đặt thành

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    29, các giai đoạn đường ống yêu cầu hơn 100 megabyte bộ nhớ để thực hiện ghi các 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 cụ thể

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    30 hoặc

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    31 bằng tùy chọn

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    32.

  • Nếu

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    27 được đặt thành

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    34, các giai đoạn đường ống yêu cầu hơn 100 megabyte của bộ nhớ để thực hiện gây ra lỗi theo mặc định. Bạn có thể bật các tệp tạm thời vào đĩa cho cụ thể

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    30 hoặc

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    31 bằng tùy chọn

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    37.

Giai đoạn tổng hợp

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

38 không bị giới hạn ở 100 megabyte RAM vì nó chạy trong một quy trình riêng biệt.

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

38
aggregation stage is not restricted to 100 megabytes of RAM because it runs in a separate process.

Ví dụ về các giai đoạn có thể viết các tệp tạm thời vào đĩa khi abertyDiskuse là

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

29 là:

  • db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    40

  • db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    41

  • db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    42

  • db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    43

  • db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    44 Khi hoạt động sắp xếp không được hỗ trợ bởi một chỉ mục

  • db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    45

Ghi chú

Các giai đoạn đường ống hoạt động trên các luồng tài liệu với mỗi giai đoạn đường ống tham gia vào các tài liệu, xử lý chúng và sau đó xuất ra các 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 đường ống này có thể yêu cầu nhiều không gian hơn giới hạn 100 MB.

Nếu kết quả của một trong các giai đoạn đường ống

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

44 của bạn vượt quá giới hạn, hãy xem xét thêm giai đoạn giới hạn $.

Bắ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

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

47 nếu bất kỳ giai đoạn tổng hợp nào viết dữ liệu vào các tệp tạm thời do hạn chế bộ nhớ.

Tập hợp và đọc các quan điểm trong MongoDB 4.2, giai đoạn

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

48 không thể được sử dụng cùng với lo ngại đọc

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

49. Đó là, nếu bạn chỉ định

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

49 Đọc mối quan tâm cho

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

51, bạn không thể bao gồm giai đoạn

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

48 trong đường ống.
  • Starting in MongoDB 4.2, the

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    48 stage cannot be used in conjunction with read concern

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    49. That is, if you specify

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    49 read concern for

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    51, you cannot include the

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    48 stage in the pipeline.

  • Giai đoạn

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    53 không thể được sử dụng cùng với lo ngại đọc

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    49. Đó là, nếu bạn chỉ định

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    49 Đọc mối quan tâm cho

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    51, bạn không thể bao gồm giai đoạn

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    53 trong đường ống.

Truy vấn không gian địa lý 2D không thể sử dụng $ hoặc toán tử

Mẹo

Truy vấn không gian địa lý đối với các truy vấn hình cầu, sử dụng kết quả chỉ số

{ ..., instock: [ { warehouse: "A", qty: 35 }, { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ], ... }

5.

For spherical queries, use the

{ ..., instock: [ { warehouse: "A", qty: 35 }, { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ], ... }

5 index result.

Việc sử dụng chỉ số

db.inventory.find( { "instock.qty": { $gt: 25 } }, { "instock.$": { $slice: 1 } } ) // Invalid starting in 4.4

9 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ỉ số

db.inventory.find( { "instock.qty": { $gt: 25 } }, { "instock.$": { $slice: 1 } } ) // Invalid starting in 4.4

9 cho các truy vấn hình cầu bao quanh các cực.

Các giá trị kinh độ tọa độ không gian địa lý là giữa

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

61 và

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

62, cả hai đều bao gồm.
  • Valid longitude values are between

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    61 and

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    62, both inclusive.

  • Các giá trị vĩ độ hợp lệ nằm trong khoảng từ

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    63 và

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    64, cả hai đều bao gồm.

Diện tích của polygons geojson cho

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

65 hoặc

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

66, 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 duy nhất, bao gồm biểu thức

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

67; Mặt khác,

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

65 hoặc

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

66 Truy vấn cho hình học bổ sung. Đối với tất cả các đa giác Geojson khác với các khu vực lớn hơn bán cầu,

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

65 hoặc

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

66 cho hình học bổ sung.

For

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

65 or

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

66, if you specify a single-ringed polygon that has an area greater than a single hemisphere, include

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

67 expression; otherwise,

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

65 or

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

66 queries for the complementary geometry. For all other GeoJSON polygons with areas greater than a hemisphere,

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

65 or

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

66 queries for the complementary geometry.

Giao dịch đa tài liệu cho các giao dịch đa tài liệu:

For multi-document transactions:

  • Bạn có thể chỉ định các hoạt động đọ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, xem các hoạt động của CRUD.existing collections. For a list of CRUD operations, see CRUD Operations.

  • 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. Để biết chi tiết, hãy xem Tạo Bộ sưu tập và Chỉ mục trong một 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 các bộ sưu tập mới trong các giao dịch ghi chéo. Ví dụ: nếu bạn viết vào một bộ sưu tập hiện có trong một mảnh vỡ và ngầm tạo một bộ sưu tập trong một shard 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ể viết cho các bộ sưu tập giới hạn. (Bắt đầu từ MongoDB 4.2)

  • Bạn không thể sử dụng Đọc Mối quan tâm

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    72 khi đọc từ bộ sưu tập giới hạn. (Bắt đầu từ MongoDB 5.0)

  • Bạn không thể đọc/ghi vào các bộ sưu tập trong cơ sở dữ liệu

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    73,

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    74 hoặc

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    75.

  • Bạn không thể viết cho các bộ sưu tập

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    76.

  • Bạn không thể trả về kế hoạch truy vấn hoạt động được hỗ trợ (tức là

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    77).

  • Đối với con trỏ được tạo bên ngoài giao dịch, bạn không thể gọi

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    78 bên trong giao dịch.

  • Đối với con trỏ được tạo trong một giao dịch, bạn không thể gọi

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    78 ngoài giao dịch.

  • Bắt đầu từ MongoDB 4.2, bạn không thể chỉ định

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    80 là hoạt động đầu tiên trong một giao dịch.

Thay đổi trong phiên bản 4.4.

Các hoạt động sau đây không được phép trong các 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 bỏ 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, xem Tạo Bộ sưu tập và Chỉ mục trong một giao dịch.

  • Tạo các bộ sưu tập mới trong các giao dịch ghi chéo. Ví dụ: nếu bạn viết vào một bộ sưu tập hiện có trong một mảnh vỡ và ngầm tạo một bộ sưu tập trong một shard khác, MongoDB không thể thực hiện cả hai thao tác trong cùng một giao dịch.

  • Tạo ra các bộ sưu tập rõ ràng, ví dụ: Phương pháp

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    81 và chỉ mục, ví dụ: Các phương pháp

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    82 và

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    83, khi sử dụng mức độ quan tâm đọc khác với

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    84

  • Các lệnh

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    85 và

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    86 và các phương thức trợ giúp của chúng.

  • Các hoạt động không phải và không thông tin khác, chẳng hạn như

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    87,

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    88,

    db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

    89, v.v. và người trợ giúp của họ.

Giao dịch có giới hạn trọn đời theo quy định của

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

90. Mặc định là 60 giây.

Viết lệnh Lệnh giới hạn kích thước

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

91 ghi được cho phép trong một hoạt động hàng loạt, được xác định bởi một yêu cầu duy nhất cho máy chủ.

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

91 writes are allowed in a single batch operation, defined by a single request to the server.

Đã thay đổi trong phiên bản 3.6: Giới hạn tăng từ

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

92 lên

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

91 ghi. Giới hạn này cũng áp dụng cho các tin nhắn Legacy

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

94.

Các hoạt động

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

95 trong

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

0 và các phương pháp so sánh trong trình điều khiển không có giới hạn này.

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

0
and comparable methods in the drivers do not have this limit.

ViewSA View Định nghĩa

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

97 không thể bao gồm giai đoạn

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

48 hoặc

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

53. 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 các giai đoạn

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

03 hoặc

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

01.

A view definition

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

97 cannot include the

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

48 or the

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

53 stage. This restriction also applies to embedded pipelines, such as pipelines used in

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

03 or

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

01 stages.

Các chế độ xem có các hạn chế hoạt động sau:

  • Quan điểm chỉ đọc.

  • Bạn không thể đổi tên lượt xem.

  • db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

    02 Hoạt động trên các lượt xem không hỗ trợ các toán tử chiếu sau:

    • db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

      6

    • db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

      04

    • db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

      05

    • db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

      06

  • Lượt xem không hỗ trợ tìm kiếm văn bản.

  • Quan điểm không hỗ trợ các hoạt động REDUCE MAP.

  • Lượt xem không hỗ trợ các hoạt động của Geonear (tức là giai đoạn đường ống

    db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

    07).

Hạn chế dự đoán trong phiên bản 4.4:

New in version 4.4:

________ Hạn chế đường dẫn trường 16-prefixed trong MongoDB 4.4, phép chiếu

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

02 và

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

10 không thể chiếu một trường bắt đầu bằng

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

6 ngoại trừ các trường DBREF. Ví dụ, bắt đầu trong MongoDB 4.4, hoạt động sau đây không hợp lệ:

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

Trong phiên bản trước, MongoDB bỏ qua các dự đoán trường ____ 16-trước .________ 16 Hạn chế vị trí vận hành vị trí trong MongoDB 4.4, toán tử chiếu

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

6 chỉ có thể xuất hiện ở cuối đường dẫn trường; ví dụ.

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

15 hoặc ________ 216. Ví dụ, bắt đầu bằng MongoDB 4.4, hoạt động sau đây không hợp lệ:

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

Để giải quyết, hãy loại bỏ thành phần của đường dẫn trường theo toán tử chiếu

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

6. Trong các phiên bản trước, MongoDB bỏ qua phần của đường dẫn theo

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

6; tức là phép chiếu được coi là ____ ____ 219.eMpty tên giới hạn chiếu tên trong MongoDB 4.4,

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

02 và

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

10 Trình chiếu không thể bao gồm một hình chiếu của một tên trường trống.

db.inventory.find( { }, { "": 0 } ) // Invalid starting in 4.4

Trong 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. Các trường của tài liệu. Ví dụ, hãy xem xét một bộ sưu tập

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

22 với các tài liệu có chứa trường

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

23:

{ ..., size: { h: 10, w: 15.25, uom: "cm" }, ... }

Bắt đầu từ MongoDB 4.4, thao tác sau không thành công với lỗi

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

24 vì nó cố gắng chiếu cả tài liệu

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

23 và trường

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

26:

db.inventory.find( {}, { size: 1, "size.uom": 1 } ) // Invalid starting in 4.4

Trong các phiên bản trước, phép chiếu cuối cùng giữa các tài liệu 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 nhúng xuất hiện sau bất kỳ và tất cả các dự đoán của các trường của nó, MongoDB dự án tài liệu nhúng. Ví dụ: tài liệu chiếu

    db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

    27 tạo ra kết quả tương tự như tài liệu chiếu

    db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

    28.

  • Nếu phép chiếu của tài liệu nhúng xuất hiện trước khi chiếu bất kỳ trường nào của nó, MongoDB dự án trường hoặc trường được chỉ định. Ví dụ: tài liệu trình chiếu

    db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

    29 tạo ra kết quả tương tự như tài liệu chiếu

    db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

    30.

Vụ va chạm đường dẫn:

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

05 của một mảng và các trường được nhúng trong MongoDB 4.4,

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

02 và

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

10 không thể chứa cả

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

05 của một mảng và trường được nhúng trong mảng. Ví dụ, hãy xem xét một bộ sưu tập

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

2

{ ..., instock: [ { warehouse: "A", qty: 35 }, { warehouse: "B", qty: 15 }, { warehouse: "C", qty: 35 } ], ... }

Bắt đầu từ MongoDB 4.4, thao tác sau không thành công với lỗi

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

24:

db.inventory.find( {}, { "instock": { $slice: 1 }, "instock.warehouse": 0 } ) // Invalid starting in 4.4

Trong 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 (

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

38) trong mảng

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

36 nhưng triệt tiêu trường

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

40 trong phần tử dự kiến. Bắt đầu từ MongoDB 4.4, để đạt được kết quả tương tự, sử dụng phương pháp

db.inventory.find( {}, { "$instock.warehouse": 0, "$item": 0, "detail.$price": 1 } ) // Invalid starting in 4.4

51 với hai giai đoạn

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

42 riêng biệt. ________ 16 toán tử vị trí và

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

05 Hạn chế khởi động trong MongoDB 4.4,

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

02 và

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

10 , bắt đầu từ MongoDB 4.4, hoạt động sau đây không hợp lệ:

db.inventory.find( { "instock.qty": { $gt: 25 } }, { "instock.$": { $slice: 1 } } ) // Invalid starting in 4.4

Trong các phiên bản trước, MongoDB trả về phần tử đầu tiên (

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

49) trong mảng

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

36 phù hợp với điều kiện truy vấn; tức là phép chiếu vị trí

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

19 được ưu tiên và

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

52 là không có op.

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

53 không loại trừ bất kỳ trường tài liệu nào khác.

Các phiên và $ giới hạn tên người dùng bên ngoài sử dụng các phiên khách hàng và đảm bảo tính nhất quán nhân quả với người dùng xác thực

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

54 (người dùng Kerberos, LDAP hoặc X.509), tên người dùng không thể lớn hơn 10k byte.

To use Client Sessions and Causal Consistency Guarantees with

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

54 authentication users (Kerberos, LDAP, or x.509 users), usernames cannot be greater than 10k bytes.

Các thời gian chờ nhàn rỗi phiên không nhận được hoạt động đọc hoặc ghi trong 30 phút hoặc không được làm mới bằng cách sử dụng

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

55 trong ngưỡng này được đánh dấu là đã hết hạn và có thể được đóng bởi máy chủ MongoDB bất cứ lúc nào. Đóng một phiên giết chết bất kỳ hoạt động đang thực hiện và con trỏ mở liên quan đến phiên. Điều này bao gồm các con trỏ được cấu hình với

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

56 hoặc

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

57 lớn hơn 30 phút.

Sessions that receive no read or write operations for 30 minutes or that are not refreshed using

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

55 within this threshold are marked as expired and can be closed by the MongoDB server at any time. Closing a session kills any in-progress operations and open cursors associated with the session. This includes cursors configured with

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

56 or a

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

57 greater than 30 minutes.

Hãy xem xét một ứng dụng phát hành

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

58. Máy chủ trả về một con trỏ cùng với một loạt các tài liệu được xác định bởi

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

59 của

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

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 này đượ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 khi con trỏ bị giết khi phiên bị đóng.

Đối với các hoạt động trả về con trỏ, nếu con trỏ có thể không hoạt động trong thời gian dài hơn 30 phút, hãy đưa ra thao tác trong một phiên rõ ràng bằng cách sử dụng

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

61 và định kỳ làm mới phiên bằng lệnh

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

55. Ví dụ:

var session = db.getMongo().startSession()
var sessionId = session.getSessionId().id
var cursor = session.getDatabase("examples").getCollection("data").find().noCursorTimeout()
var refreshTimestamp = new Date() // take note of time at operation start
while (cursor.hasNext()) {
// Check if more than 5 minutes have passed since the last refresh
if ( (new Date()-refreshTimestamp)/1000 > 300 ) {
print("refreshing session")
db.adminCommand({"refreshSessions" : [sessionId]})
refreshTimestamp = new Date()
}
// process cursor normally
}

Trong hoạt động ví dụ, phương thức

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

58 được liên kết với một phiên rõ ràng.Con trỏ được cấu hình với

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

56 để ngăn máy chủ đóng con trỏ nếu không hoạt động.Vòng lặp

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

65 bao gồm một khối sử dụng

db.inventory.find( { }, { "instock.$.qty": 1 } ) // Invalid starting in 4.4

55 để 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ờ lúc 30 phút, con trỏ có thể vẫn mở vô thời hạn.

Đối với trình điều khiển MongoDB, trì hoãn tài liệu trình điều khiển để được hướng dẫn và cú pháp để tạo các phiên.driver documentation for instructions and syntax for creating sessions.