Kích thước MongoDB

Tôi tin rằng đây là truy vấn nhanh nhất trả lời câu hỏi của bạn vì nó không sử dụng mệnh đề

/\. "$
80 được diễn giải

Show
{$nor: [
    {name: {$exists: false}},
    {name: {$size: 0}},
    {name: {$size: 1}}
]}

Nó có nghĩa là "tất cả các tài liệu ngoại trừ những tài liệu không có tên (mảng không tồn tại hoặc trống) hoặc chỉ có một tên. "

Bài kiểm tra

> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>

Chúng tôi đã chia nhỏ chức năng chính của toán tử $size trong MongoDB thành các bước sau. Đầu tiên, nó khớp với một trường mảng đối với kích thước do người dùng chèn vào;

Cú pháp của toán tử $size được định nghĩa là

{array-field: {$size: }}

Ở đây, trường mảng đề cập đến tên của trường được nhắm mục tiêu trong tài liệu và độ dài của bất kỳ mảng nào biểu thị bất kỳ số nào khớp với độ dài

Cách sử dụng toán tử $size trong MongoDB

Trong hướng dẫn này, chúng tôi sẽ sử dụng cơ sở dữ liệu và tên bộ sưu tập sau

  • linuxhint là cơ sở dữ liệu mà chúng ta sẽ sử dụng ở đây
  • máy tính xách tay sẽ được sử dụng làm tên bộ sưu tập liên kết với cơ sở dữ liệu linuxhint

Trước khi đi sâu vào các ví dụ, hãy lấy danh sách các tài liệu có trong bộ sưu tập máy tính xách tay bằng lệnh sau

> db. máy tính xách tay. tìm thấy(). khá()

Kích thước MongoDB

ví dụ 1. Sử dụng cơ bản toán tử kích thước $ trong MongoDB

Ví dụ này hướng dẫn bạn sử dụng cơ bản toán tử $size

Đề cập đến các tài liệu có trong bộ sưu tập “máy tính xách tay”, lệnh được đề cập bên dưới sẽ truy xuất tài liệu trong đó trường mảng có độ dài 3

> db. máy tính xách tay. tìm ({Làm. {$size. 3}}). khá()

Kích thước MongoDB

Chỉ một tài liệu được truy xuất có chứa độ dài mảng là 3 trong trường “Tạo”

ví dụ 2. Sử dụng toán tử kích thước $ với các mảng lồng nhau

Vì cách sử dụng cơ bản của $size là để lấy đầu ra chỉ khớp với độ dài mảng đã chỉ định. Nó đếm một mảng lồng nhau như một thực thể duy nhất. Giả sử, có một mảng chứa một mảng lồng nhau và một giá trị, toán tử $size sẽ không tìm các giá trị của mảng lồng nhau, nhưng nó tính một giá trị duy nhất. Do đó, tổng chiều dài của mảng cha sẽ là “2“

Truy vấn Mongo được viết bên dưới sẽ truy xuất các tài liệu có độ dài mảng là “2“

> db. máy tính xách tay. tìm ({Làm. {$size. 2}}). khá()

Kích thước MongoDB

Mặc dù, mảng tổ chứa 2 giá trị trong đó, nhưng nó được coi là một giá trị và do đó độ dài tổng thể của mảng cha là 2

ví dụ 3. Sử dụng toán tử kích thước $ với độ dài sai

Nếu bạn đã nhập độ dài không khớp trong bộ sưu tập được nhắm mục tiêu thì sao?

> db. máy tính xách tay. tìm ({Làm. {$size. 5}}). khá()

Kích thước MongoDB

Lệnh sẽ được thực thi nhưng sẽ không hiển thị gì vì bộ sưu tập của chúng ta không có bất kỳ mảng nào có độ dài “5“

Ghi chú. Tuy nhiên, bạn có thể nhận được kết quả bằng cách sử dụng toán tử “$where” với toán tử “$exists”, nhưng việc thực thi sẽ chậm trong trường hợp này. Lệnh được đề cập dưới đây sẽ hiển thị các tài liệu có độ dài mảng lớn hơn hoặc bằng 4

> db. máy tính xách tay. tìm ({Làm. {$tồn tại. true}, $where. 'cái này. Chế tạo. chiều dài>=4'}). khá()

Phần kết luận

Toán tử truy vấn mảng được sử dụng trong MongoDB để truy xuất tài liệu bằng cách tham chiếu đến mảng. Các toán tử xử lý mảng trong MongoDB là $size, $all và $elemMatch. Hướng dẫn này hướng đến toán tử $size và bạn có thể xem phần giới thiệu ngắn gọn, sau đó là một số ví dụ về toán tử $size trong MongoDB. Công dụng chính của nó là lấy tài liệu từ một bộ sưu tập cụ thể bằng cách sử dụng độ dài của một mảng. Mặc dù chức năng tương tự cũng có thể đạt được bằng cách sử dụng các toán tử $where và $exists, nhưng chúng cần có thời gian và cú pháp dài để làm như vậy

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 trình điều khiển để biết thêm thông tin về GridFS. Độ sâu lồng nhau cho tài liệu BSON
Kích thước MongoDB

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

Hạn chế đặt tên

Sử dụng cách viết hoa chữ thường trong tên cơ sở dữ liệu

Khô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
/\. "$
4

Hạ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.

________số 8

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ệu

Tê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ập

Tê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.

  • chứa

    /\. "$
    8

  • là một chuỗi rỗng (e. g.

    /\. "$
    9)

  • chứa ký tự null

  • bắt đầu bằng tiền tố

    > db.test.save({})
    > db.test.save({name: []})
    > db.test.save({name: ['George']})
    > db.test.save({name: ['George', 'Raymond']})
    > db.test.save({name: ['George', 'Raymond', 'Richard']})
    > db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
    > db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
    { "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
    >
    
    20. (Dành riêng cho sử dụng nội bộ. )

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

> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
21 trong
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
22
or a similar method for your driver.

Độ dài không gian tên

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

    > db.test.save({})
    > db.test.save({name: []})
    > db.test.save({name: ['George']})
    > db.test.save({name: ['George', 'Raymond']})
    > db.test.save({name: ['George', 'Raymond', 'Richard']})
    > db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
    > db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
    { "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
    >
    
    23 trở lên, MongoDB tăng giới hạn cho các bộ sưu tập và chế độ xem chưa được phân đoạn lên 255 byte và 235 byte cho các bộ sưu tập được phân đoạn. Đối với bộ sưu tập hoặc chế độ xem, không gian tên bao gồm tên cơ sở dữ liệu, dấu phân cách dấu chấm (
    > db.test.save({})
    > db.test.save({name: []})
    > db.test.save({name: ['George']})
    > db.test.save({name: ['George', 'Raymond']})
    > db.test.save({name: ['George', 'Raymond', 'Richard']})
    > db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
    > db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
    { "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
    >
    
    24) và tên bộ sưu tập/chế độ xem (e. g.
    > db.test.save({})
    > db.test.save({name: []})
    > db.test.save({name: ['George']})
    > db.test.save({name: ['George', 'Raymond']})
    > db.test.save({name: ['George', 'Raymond', 'Richard']})
    > db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
    > db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
    { "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
    >
    
    25),

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

    > db.test.save({})
    > db.test.save({name: []})
    > db.test.save({name: ['George']})
    > db.test.save({name: ['George', 'Raymond']})
    > db.test.save({name: ['George', 'Raymond', 'Richard']})
    > db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
    > db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
    { "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
    >
    
    26 hoặc cũ hơn, độ dài tối đa của không gian tên bộ sưu tập và chế độ xem không phân đoạn vẫn là 120 byte và 100 byte đối với bộ sưu tập phân đoạn

Hạn chế về tên trường
  • Tên trường không được chứa ký tự

    > db.test.save({})
    > db.test.save({name: []})
    > db.test.save({name: ['George']})
    > db.test.save({name: ['George', 'Raymond']})
    > db.test.save({name: ['George', 'Raymond', 'Richard']})
    > db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
    > db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
    { "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
    >
    
    27.

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

    > db.test.save({})
    > db.test.save({name: []})
    > db.test.save({name: ['George']})
    > db.test.save({name: ['George', 'Raymond']})
    > db.test.save({name: ['George', 'Raymond', 'Richard']})
    > db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
    > db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
    { "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
    >
    
    24) và ký hiệu đô la (
    /\. "$
    8)

  • MongodB 5. 0 thêm hỗ trợ được cải thiện cho việc sử dụng (

    /\. "$
    8) và (
    > db.test.save({})
    > db.test.save({name: []})
    > db.test.save({name: ['George']})
    > db.test.save({name: ['George', 'Raymond']})
    > db.test.save({name: ['George', 'Raymond', 'Richard']})
    > db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
    > db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
    { "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
    >
    
    24) trong tên trường. Có một số hạn chế. Xem Cân nhắc tên trường để biết thêm chi tiết

Hạn chế đối với _id

Tên trường

/\. "$
42 được dành riêng để sử dụng làm khóa chính; . Nếu
/\. "$
42 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ên

Cảnh báo

Hãy thận trọng, các vấn đề được thảo luận trong phần này có thể dẫn đến mất hoặc hỏng dữ liệu

MongoDB không hỗ trợ tên trường trùng lặp

Ngôn ngữ truy vấn MongoDB không được xác định trên các tài liệu có tên trường trùng lặp. Trình tạo BSON có thể hỗ trợ tạo tài liệu BSON có tên trường trùng lặp. Mặc dù trình tạo BSON có thể không gây ra lỗi, nhưng việc chèn các tài liệu này vào MongoDB không được hỗ trợ ngay cả khi việc chèn thành công. Ví dụ: chèn tài liệu BSON có tên trường trùng lặp thông qua trình điều khiển MongoDB có thể khiến trình điều khiển âm thầm loại bỏ các giá trị trùng lặp trước khi chèn

Mối quan tâm về xuất nhập khẩu với ký hiệu đô la (/\. "$8) và thời kỳ (> db.test.save({}) > db.test.save({name: []}) > db.test.save({name: ['George']}) > db.test.save({name: ['George', 'Raymond']}) > db.test.save({name: ['George', 'Raymond', 'Richard']}) > db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']}) > db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]}) { "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] } { "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] } { "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] } > 24)

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

/\. "$
8) và có thể chứa dấu chấm (
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
24). Tuy nhiên,
/\. "$
49
/\. "$
20
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ày

Cũng có những hạn chế đối với việc sử dụng ____249

/\. "$
20 . Vì các tệp CSV sử dụng dấu chấm (
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
24) để biểu thị phân cấp dữ liệu nên dấu chấm (
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
24) 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 (_______28) và dấu chấm (> db.test.save({}) > db.test.save({name: []}) > db.test.save({name: ['George']}) > db.test.save({name: ['George', 'Raymond']}) > db.test.save({name: ['George', 'Raymond', 'Richard']}) > db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']}) > db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]}) { "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] } { "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] } { "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] } > 24)

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 (
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
24) 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
/\. "$
31) trên các máy chủ cũ hơn MongoDB 5. 0

Khi chạy các lệnh chèn, cập nhật và findAndModify, trình điều khiển 5. 0 tương thích loại bỏ các hạn chế về việc sử dụng tài liệu có tên trường có tiền tố đô la (

/\. "$
8) hoặc có chứa dấu chấm (
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
24). 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
  • Đối với FeatureCompatibilityVersion được đặt thành

    > db.test.save({})
    > db.test.save({name: []})
    > db.test.save({name: ['George']})
    > db.test.save({name: ['George', 'Raymond']})
    > db.test.save({name: ['George', 'Raymond', 'Richard']})
    > db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
    > db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
    { "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
    >
    
    23 trở lên, MongoDB tăng giới hạn cho các bộ sưu tập và chế độ xem không được phân đoạn lên 255 byte và 235 byte cho các bộ sưu tập được phân đoạn. Đối với bộ sưu tập hoặc chế độ xem, không gian tên bao gồm tên cơ sở dữ liệu, dấu phân cách dấu chấm (
    > db.test.save({})
    > db.test.save({name: []})
    > db.test.save({name: ['George']})
    > db.test.save({name: ['George', 'Raymond']})
    > db.test.save({name: ['George', 'Raymond', 'Richard']})
    > db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
    > db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
    { "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
    >
    
    24) và tên bộ sưu tập/chế độ xem (e. g.
    > db.test.save({})
    > db.test.save({name: []})
    > db.test.save({name: ['George']})
    > db.test.save({name: ['George', 'Raymond']})
    > db.test.save({name: ['George', 'Raymond', 'Richard']})
    > db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
    > db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
    { "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
    >
    
    25),

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

    > db.test.save({})
    > db.test.save({name: []})
    > db.test.save({name: ['George']})
    > db.test.save({name: ['George', 'Raymond']})
    > db.test.save({name: ['George', 'Raymond', 'Richard']})
    > db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
    > db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
    { "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
    >
    
    26 hoặc cũ hơn, độ dài tối đa của không gian tên bộ sưu tập và chế độ xem không phân đoạn vẫn là 120 byte và 100 byte đối với bộ sưu tập phân đoạn

Mẹo

Xem thêm

Hạn chế đặt tên

chỉ mục

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

Lưu ý

Thay đổi trong phiên bản 4. 2

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

> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
26 trở lên.

Đối với MongoDB 2. 6 đến các phiên bản MongoDB có fCV được đặt thành

/\. "$
39 hoặc cũ hơn, tổng kích thước của mục nhập chỉ mục, có thể bao gồm chi phí cấu trúc tùy thuộc vào loại BSON, phải nhỏ hơn 1024 byte

Khi áp dụng Giới hạn khóa chỉ mục .

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

  • Hoạt động lập chỉ mục lại sẽ xảy ra lỗi nếu mục nhập chỉ mục cho trường được lập chỉ mục vượt quá giới hạn khóa chỉ mục . Các hoạt động lập chỉ mục lại xảy ra như một phần của lệnh

    /\. "$
    20 cũng như phương pháp
    /\. "$
    21.

    Bởi vì các thao tác này loại bỏ tất cả các chỉ mục khỏi bộ sưu tập và sau đó tạo lại chúng theo trình tự, nên lỗi từ giới hạn khóa chỉ mục ngăn không cho các thao tác này thực hiện .

  • MongoDB sẽ không chèn vào bộ sưu tập được lập chỉ mục bất kỳ tài liệu nào có trường được lập chỉ mục có mục nhập chỉ mục tương ứng sẽ vượt quá giới hạn khóa chỉ mục , mà thay vào đó . Các phiên bản trước của MongoDB sẽ chèn nhưng không lập chỉ mục các tài liệu đó.

  • Các cập nhật cho trường được lập chỉ mục sẽ bị lỗi nếu giá trị được cập nhật khiến mục nhập chỉ mục vượt quá giới hạn khóa chỉ mục .

    Nếu một tài liệu hiện có chứa một trường được lập chỉ mục có mục nhập chỉ mục vượt quá giới hạn, mọi cập nhật dẫn đến việc di chuyển tài liệu đó trên đĩa sẽ bị lỗi

  • /\. "$
    22 và
    /\. "$
    49
    sẽ không chèn tài liệu chứa trường được lập chỉ mục có mục nhập chỉ mục tương ứng sẽ vượt quá . index key limit.

  • Trong MongoDB 2. 6, các thành viên phụ của bộ bản sao sẽ tiếp tục sao chép tài liệu có trường được lập chỉ mục có mục nhập chỉ mục tương ứng vượt quá giới hạn khóa chỉ mục khi đồng bộ hóa ban đầu nhưng sẽ in cảnh báo .

    Thành viên phụ cũng cho phép các hoạt động xây dựng và xây dựng lại chỉ mục trên tập hợp chứa trường được lập chỉ mục có mục nhập chỉ mục tương ứng vượt quá giới hạn khóa chỉ mục nhưng .

    Với bộ bản sao phiên bản hỗn hợp trong đó bản phụ là phiên bản 2. 6 và chính là phiên bản 2. 4, thứ hai sẽ sao chép tài liệu được chèn hoặc cập nhật trên 2. 4 chính, nhưng sẽ in thông báo lỗi trong nhật ký nếu tài liệu chứa trường được lập chỉ mục có mục nhập chỉ mục tương ứng vượt quá giới hạn khóa chỉ mục .

  • Đối với các bộ sưu tập được phân đoạn hiện có, quá trình di chuyển đoạn dữ liệu sẽ không thành công nếu đoạn dữ liệu đó có tài liệu chứa trường được lập chỉ mục có mục nhập chỉ mục vượt quá giới hạn khóa chỉ mục.

Số lượng chỉ mục trên mỗi bộ sưu tập

Một bộ sưu tập không thể có nhiều hơn 64 chỉ mục.

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

Lưu ý

Thay đổi trong phiên bản 4. 2

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

> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
26 trở lê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

/\. "$
39 hoặc cũ hơn, 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.
/\. "$
26), ​​không thể dài hơn 127 byte

Theo mặc định,

/\. "$
27 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 thức
/\. "$
27 cho phương thức
/\. "$
29 để đảm bảo rằng tên chỉ mục đủ điều kiện không vượt quá giới hạn

Số lượng trường được lập chỉ mục trong một chỉ mục tổng hợp

Khô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 thể sử dụng cả chỉ mục văn bản và không gian địa lý

Bạn không thể kết hợp truy vấn

/\. "$
20, 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
/\. "$
20 với toán tử
/\. "$
22.

Các trường có Chỉ mục 2dsphere chỉ có thể chứa Hình học

Các trường có chỉ mục 2dsphere phải chứa dữ liệu hình học ở dạng cặp tọa độ hoặc dữ liệu GeoJSON. Nếu bạn cố gắng chèn một tài liệu có dữ liệu phi hình học vào trường được lập chỉ mục

/\. "$
23 hoặc tạo chỉ mục
/\. "$
23 trên bộ sưu tập trong đó trường được lập chỉ mục có dữ liệu phi hình học, thì thao tác sẽ không thành công.

Mẹo

Xem thêm

Giớ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,

/\. "$
25 á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

/\. "$
25 tạo các khóa chỉ mục trên một trường chứa một mảng, thì
/\. "$
25 sẽ tạo một 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,
/\. "$
25 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ớ

/\. "$
29 giới hạn số lượng khóa tối đa được tạo cho một tài liệu để ngăn lỗi hết 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ố
/\. "$
29 chỉ định, thì thao tác đó sẽ không thành công

Các giá trị NaN được Công cụ lưu trữ WiredTiger trả về từ Truy vấn được bao phủ luôn thuộc loại double

Nếu giá trị của một trường được trả về từ một truy vấn được bao phủ bởi một chỉ mục là

/\. "$
31, .

Chỉ mục nhiều khóa

Chỉ 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

/\. "$
34 hỗ trợ xây dựng một hoặc nhiều chỉ mục trên bộ sưu tập.
/\. "$
34 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
/\. "$
34 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
/\. "$
34. Khi đạt đến giới hạn bộ nhớ,
/\. "$
34 sử dụng các tệp đĩa tạm thời trong thư mục con có tên
/\. "$
39 trong thư mục
/\. "$*<>:|?
20 để 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ủ

/\. "$*<>:|?
21. 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

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

    > db.test.save({})
    > db.test.save({name: []})
    > db.test.save({name: ['George']})
    > db.test.save({name: ['George', 'Raymond']})
    > db.test.save({name: ['George', 'Raymond', 'Richard']})
    > db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
    > db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
    { "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
    >
    
    26, giới hạn bộ nhớ bản 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)

    /\. "$
    39, giới hạn bộ nhớ xây dựng chỉ mục chỉ áp dụng cho các bản dựng chỉ mục nền trước

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

/\. "$*<>:|?
21 đặt ra

Thao tác đồng bộ hóa ban đầu chỉ điền vào một bộ sưu tập tại một thời điểm và không có nguy cơ vượt quá giới hạn bộ nhớ. Tuy nhiên, người dùng có thể bắt đầu xây dựng chỉ mục trên nhiều bộ sưu tập trong nhiều cơ sở dữ liệu đồng thời và có khả năng tiêu thụ một lượng bộ nhớ lớn hơn giới hạn được đặt trong

/\. "$*<>:|?
21

Mẹ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ục

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

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

  • chỉ mục 2d và

  • chỉ mục geoHaystack

Mẹo

Để tạo chỉ mục

/\. "$*<>:|?
26,
/\. "$*<>:|?
27 hoặc
/\. "$*<>:|?
28 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
/\. "$*<>:|?
29 khi tạo chỉ mục

Chỉ mục ẩn
  • Bạn không thể ẩn chỉ mục

    /\. "$
    42.

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

    /\. "$
    01 trên chỉ mục ẩn

sắp xếp

Số lượng khóa sắp xếp tối đa

Bạn có thể sắp xếp trên tối đa 32 khóa.

Dữ liệu

Số lượng tài liệu tối đa trong một 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 một bộ sưu tập giới hạn với tham số

/\. "$
03 của
/\. "$
02, 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 sao

Số thành viên của một bộ bản sao

Bộ 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 sao

Bộ 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ự động

Nế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]The oplog can grow past its configured size limit to avoid deleting the
/\. "$
06.

Cụm phân mảnh

Cá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 động

Hoạ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ảnh

Trong 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
/\. "$
12

Các truy vấn được bảo hiểm trong các cụm được phân đoạn

Khi 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ọng

Các giới hạn này chỉ áp dụng cho hoạt động phân mảnh ban đầu. Bộ sưu tập được phân mảnh có thể phát triển đến bất kỳ kích thước nào sau khi kích hoạt thành công phân đoạn

Sử dụng các công thức sau để tính kích thước bộ sưu tập tối đa theo lý thuyết

> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
2

Ghi chú

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

/\. "$
14 byte

Tấ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ối

Sau khi phân mảnh ban đầu thành công, bạn có thể giảm kích thước khối nếu cần. Nếu sau này bạn giảm kích thước khối, có thể mất thời gian để tất cả các khối chia thành kích thước mới. Xem Sửa đổi kích thước phạm vi trong cụm phân mảnh để 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

2 TB

4 TB

8 TB

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

2 TB

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ạn

Tấ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
/\. "$
42 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
/\. "$
42 trả về lỗi

Chỉ mục duy nhất trong bộ sưu tập phân đoạn

MongoDB 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ẹo

Nhìn thấy

Cá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ố tài liệu tối đa trên mỗi phạm vi để di chuyển

Theo mặc định, MongoDB không thể di chuyển một phạm vi nếu số lượng tài liệu trong phạm vi lớn hơn 2 lần kết quả của việc chia phạm vi được định cấu hình . Nếu MongoDB có thể di chuyển một phạm vi con của một đoạn và giảm kích thước xuống nhỏ hơn thế, thì bộ cân bằng sẽ làm như vậy bằng cách di chuyển một phạm vi.

/\. "$
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

  • Cài đặt bộ cân bằng

    /\. "$
    28 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 Phạm vi cân bằng vượt quá giới hạn kích thước để biết chi tiết

    Khi đưa ra các lệnh

    /\. "$
    29 và
    /\. "$
    30, có thể chỉ định tùy chọn forceJumbo để cho phép di chuyển các phạm vi quá lớn để di chuyển. Các phạm vi có thể hoặc không thể được dán nhãn jumbo

Hạn chế chính của Shard

Kích thước khóa phân mảnh

Bắt đầu từ phiên bản 4. 4, MongoDB loại bỏ giới hạn về kích thước khóa phân đoạn.

Đối với MongoDB 4. 2 trở về trước, khóa phân đoạn không thể vượt quá 512 byte

Loại chỉ mục khóa phân đoạn

Chỉ mục khóa phân đoạn có thể là chỉ mục tăng dần trên khóa phân đoạn, 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ước

Các tùy chọn thay đổi khóa phân đoạn tùy thuộc vào phiên bản MongoDB mà bạn đang chạy.

  • Bắt đầu từ MongoDB 5. 0, bạn có thể phân chia lại bộ sưu tập bằng cách thay đổi khóa phân đoạn của tài liệu

  • Bắt đầu từ MongoDB 4. 4, bạn có thể tinh chỉnh khóa phân đoạn bằng cách thêm trường hậu tố hoặc các trường vào khóa phân đoạn hiện có

  • Trong MongoDB 4. 2 trở về trước, không thể thay đổi lựa chọn khóa phân đoạn sau khi phân đoạn

Trong MongoDB 4. 2 trở về trước, để thay đổi khóa phân đoạn

  • Kết xuất tất cả dữ liệu từ MongoDB sang định dạng bên ngoài

  • Bỏ bộ sưu tập đã phân mảnh ban đầu

  • Định cấu hình sharding bằng phím shard mới

  • Chia trước phạm vi khóa phân đoạn để đảm bảo phân phối đồng đều ban đầu

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

Các phím phân đoạn tăng đơn điệu có thể hạn chế thông lượng chèn

Đối với các cụm có khối lượng chèn cao, 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

/\. "$
42, hãy lưu ý rằng các giá trị mặc định của trường
/\. "$
42 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 động

Thao tác sắp xếp

Nếu MongoDB không thể sử dụng một hoặc nhiều chỉ mục để lấy thứ tự sắp xếp, 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

/\. "$
33 đọ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

/\. "$
34 (Mới trong MongoDB 4. 4).
/\. "$
35 cho phép MongoDB sử dụng các tệp tạm thời trên đĩa để lưu trữ dữ liệu vượt quá giới hạn bộ nhớ hệ thống 100 megabyte trong khi xử lý thao tác sắp xếp chặn

Thay đổi trong phiên bản 4. 4. Đối với MongoDB 4. 2 trở về trước, thao tác sắp xếp chặn không được vượt quá 32 megabyte bộ nhớ hệ thống

Để biết thêm thông tin về sắp xếp và sử dụng chỉ mục, hãy xem Sử dụng Sắp xếp và Chỉ mục

Hoạt động đường ống tổng hợp

Bắt đầu từ MongoDB 6. 0, tham số

/\. "$
36 kiểm soát liệu 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.

  • Nếu

    /\. "$
    36 được đặt thành
    /\. "$
    38, các giai đoạn đường ống yêu cầu hơn 100 megabyte bộ nhớ để thực thi ghi tệp tạm thời vào đĩa theo mặc định. Bạn có thể vô hiệu hóa việc ghi các tệp tạm thời vào đĩa cho các lệnh
    /\. "$
    39 hoặc
    /\. "$
    40 cụ thể bằng cách sử dụng tùy chọn
    /\. "$
    41

  • Nếu

    /\. "$
    36 được đặt thành
    /\. "$
    43, các giai đoạn đường ống yêu cầu hơn 100 megabyte bộ nhớ để thực thi sẽ gây ra lỗi theo mặc định. Bạn có thể cho phép ghi các tệp tạm thời vào đĩa cho
    /\. "$
    39 hoặc
    /\. "$
    40 cụ thể bằng cách sử dụng tùy chọn
    /\. "$
    46

Giai đoạn tổng hợp

/\. "$
47 không bị giới hạn ở 100 megabyte RAM vì giai đoạn này chạy trong một quy trình riêng biệt.

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

/\. "$
38 là

  • /\. "$
    49

  • /\. "$
    50

  • /\. "$
    51

  • /\. "$
    52

  • /\. "$
    53 khi thao tác sắp xếp không được chỉ mục hỗ trợ

  • /\. "$
    54

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

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

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

/\. "$
56 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
  • Bắt đầu từ MongoDB 4. 2, giai đoạn

    /\. "$
    57 không thể được sử dụng cùng với mối quan tâm đã đọc
    /\. "$
    58. Nghĩa là, nếu bạn chỉ định mối quan tâm đọc
    /\. "$
    58 cho
    /\. "$
    60, thì bạn không thể đưa giai đoạn
    /\. "$
    57 vào quy trình.

  • Giai đoạn

    /\. "$
    62 không thể được sử dụng cùng với mối quan tâm đã đọc
    /\. "$
    58. Nghĩa là, nếu bạn chỉ định mối quan tâm đọc
    /\. "$
    58 cho
    /\. "$
    60, thì bạn không thể đưa giai đoạn
    /\. "$
    62 vào quy trình

Các truy vấn không gian địa lý 2d không thể sử dụng toán tử $or

Mẹo

Nhìn thấy

  • /\. "$
    67

  • /\. "$*<>:|?
    27 Nội bộ chỉ mục

Truy vấn không gian địa lý

Đối với truy vấn hình cầu, hãy sử dụng kết quả chỉ mục

/\. "$
23.

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

/\. "$*<>:|?
27 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
/\. "$*<>:|?
27 cho các truy vấn hình cầu bao quanh các cực

Tọa độ không gian địa lý
  • Các giá trị kinh độ hợp lệ nằm trong khoảng từ

    /\. "$
    72 đến
    /\. "$
    73, bao gồm cả hai.

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

    /\. "$
    74 đến
    /\. "$
    75, bao gồm cả hai

Diện tích đa giác GeoJSON

Đối với

/\. "$
76 hoặc
/\. "$
77, 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
/\. "$
78; . Đố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
/\. "$
76 hoặc
/\. "$
77 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.

  • Bạn có thể chỉ định thao tác đọc/ghi (CRUD) trên các bộ sưu tập hiện có. Để biết danh sách các hoạt động CRUD, hãy xem Hoạt động CRUD

  • Bắt đầu từ MongoDB 4. 4, bạn có thể tạo bộ sưu tập và lập chỉ mục trong giao dịch. Để biết chi tiết, hãy xem Tạo bộ sưu tập và chỉ mục trong giao dịch

  • Các bộ sưu tập được sử dụng trong một giao dịch có thể nằm trong các cơ sở dữ liệu khác nhau

    Ghi chú

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

  • Bạn không thể ghi vào bộ sưu tập giới hạn. (Bắt đầu từ MongoDB 4. 2)

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

    /\. "$
    83 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

    /\. "$
    84,
    /\. "$
    85 hoặc
    /\. "$
    86

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

    /\. "$
    87

  • Bạn không thể trả lại kế hoạch truy vấn của hoạt động được hỗ trợ (i. e.

    /\. "$
    88)

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

    /\. "$
    89 bên trong giao dịch

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

    /\. "$
    89 bên ngoài giao dịch

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

    /\. "$
    91 là thao tác đầu tiên trong 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 giao dịch

  • Các hoạt động ảnh hưởng đến danh mục cơ sở dữ liệu, chẳng hạn như tạo hoặc xóa bộ sưu tập hoặc chỉ mục khi sử dụng MongoDB 4. 2 hoặc thấp hơn. Bắt đầu từ MongoDB 4. 4, bạn có thể tạo các bộ sưu tập và chỉ mục trong các giao dịch trừ khi giao dịch là giao dịch ghi chéo. Để biết chi tiết, hãy xem Tạo bộ sưu tập và chỉ mục trong giao dịch

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

  • Tạo rõ ràng các bộ sưu tập, e. g. Phương pháp

    /\. "$
    92 và chỉ mục, e. g. Phương pháp
    /\. "$
    93 và
    /\. "$
    94, khi sử dụng mức độ quan tâm đọc khác với
    /\. "$
    95

  • Các lệnh

    /\. "$
    96 và
    /\. "$
    97 và các phương thức trợ giúp của chúng

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

    /\. "$
    98,
    /\. "$
    99,
    > db.test.save({})
    > db.test.save({name: []})
    > db.test.save({name: ['George']})
    > db.test.save({name: ['George', 'Raymond']})
    > db.test.save({name: ['George', 'Raymond', 'Richard']})
    > db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
    > db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
    { "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
    >
    
    200, v.v. và những người giúp việc của họ

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

> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
201. Mặc định là 60 giây

Kích thước giới hạn lô lệnh ghi

> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
202 ghi được cho phép trong một thao tác lô duy nhất, đượ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ừ

> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
203 lên
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
202 viết. Giới hạn này cũng áp dụng cho các thư
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
205 cũ

Các hoạt động của

> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
206 trong
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
22
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

> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
208 không thể bao gồm giai đoạn
/\. "$
57 hoặc
/\. "$
62. 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
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
212.

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

  • Chế độ xem chỉ đọc

  • Bạn không thể đổi tên chế độ xem

  • Hoạt động của

    > db.test.save({})
    > db.test.save({name: []})
    > db.test.save({name: ['George']})
    > db.test.save({name: ['George', 'Raymond']})
    > db.test.save({name: ['George', 'Raymond', 'Richard']})
    > db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
    > db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
    { "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
    >
    
    213 trên các khung nhìn không hỗ trợ các toán tử chiếu sau

    • /\. "$
      8

    • > db.test.save({})
      > db.test.save({name: []})
      > db.test.save({name: ['George']})
      > db.test.save({name: ['George', 'Raymond']})
      > db.test.save({name: ['George', 'Raymond', 'Richard']})
      > db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
      > db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
      { "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
      { "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
      { "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
      >
      
      215

    • > db.test.save({})
      > db.test.save({name: []})
      > db.test.save({name: ['George']})
      > db.test.save({name: ['George', 'Raymond']})
      > db.test.save({name: ['George', 'Raymond', 'Richard']})
      > db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
      > db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
      { "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
      { "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
      { "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
      >
      
      216

    • > db.test.save({})
      > db.test.save({name: []})
      > db.test.save({name: ['George']})
      > db.test.save({name: ['George', 'Raymond']})
      > db.test.save({name: ['George', 'Raymond', 'Richard']})
      > db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
      > db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
      { "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
      { "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
      { "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
      >
      
      217

  • Chế độ xem không hỗ trợ tìm kiếm văn bản

  • Chế độ xem không hỗ trợ các thao tác thu nhỏ bản đồ

  • Chế độ xem không hỗ trợ hoạt động GeoNear (i. e. Giai đoạn đường ống

    > db.test.save({})
    > db.test.save({name: []})
    > db.test.save({name: ['George']})
    > db.test.save({name: ['George', 'Raymond']})
    > db.test.save({name: ['George', 'Raymond', 'Richard']})
    > db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
    > db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
    { "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
    >
    
    218)

Hạn chế trình chiếu

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
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
213 và
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
221 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ệ

/\. "$
4

Trong 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.
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
226 hoặc
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
227. Ví dụ: bắt đầu từ MongoDB 4. 4, thao tác sau không hợp lệ

/\. "$
2

Để 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à
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
230. Hạn chế chiếu tên trường trốngBắt đầu trong MongoDB 4. Phép chiếu 4,
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
213 và
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
221 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ệ

/\. "$
3

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. 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
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
233 với các tài liệu chứa trường
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
234

/\. "$
2

Bắt đầu từ MongoDB 4. 4, thao tác sau không thành công với lỗi
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
235 vì nó cố gắng chiếu cả tài liệu
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
234 và trường
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
237

/\. "$
2

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 được nhúng và các trường của nó xác định phép chiếu
  • Nếu phép chiếu của tài liệu được nhúng xuất hiện sau bất kỳ và tất cả các phép chiếu của các trường của nó, thì MongoDB sẽ chiếu tài liệu được nhúng. Ví dụ: tài liệu phép chiếu

    > db.test.save({})
    > db.test.save({name: []})
    > db.test.save({name: ['George']})
    > db.test.save({name: ['George', 'Raymond']})
    > db.test.save({name: ['George', 'Raymond', 'Richard']})
    > db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
    > db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
    { "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
    >
    
    238 tạo ra kết quả tương tự như tài liệu phép chiếu
    > db.test.save({})
    > db.test.save({name: []})
    > db.test.save({name: ['George']})
    > db.test.save({name: ['George', 'Raymond']})
    > db.test.save({name: ['George', 'Raymond', 'Richard']})
    > db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
    > db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
    { "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
    >
    
    239

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

    > db.test.save({})
    > db.test.save({name: []})
    > db.test.save({name: ['George']})
    > db.test.save({name: ['George', 'Raymond']})
    > db.test.save({name: ['George', 'Raymond', 'Richard']})
    > db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
    > db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
    { "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
    >
    
    240 tạo ra kết quả tương tự như tài liệu phép chiếu
    > db.test.save({})
    > db.test.save({name: []})
    > db.test.save({name: ['George']})
    > db.test.save({name: ['George', 'Raymond']})
    > db.test.save({name: ['George', 'Raymond', 'Richard']})
    > db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
    > db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
    { "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
    { "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
    >
    
    241

Va chạm đường dẫn.
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
216 của một mảng và các trường nhúngBắt đầu trong MongoDB 4. 4, Phép chiếu
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
213 và
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
221 không thể chứa cả
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
216 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
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
233 có chứa một trường mảng
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
247

/\. "$
3

Bắt đầu từ MongoDB 4. 4, thao tác sau không thành công với lỗi
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
235

/\. "$*<>:|?
2

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.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
249) trong mảng
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
247 nhưng loại bỏ trường
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
251 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
/\. "$
60 với hai giai đoạn
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
253 riêng biệt.
/\. "$
8 Toán tử vị trí và Hạn chế
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
216Bắt đầu trong MongoDB 4. 4, Phép chiếu
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
213 và
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
221 không thể bao gồm biểu thức phép chiếu
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
216 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ệ

/\. "$
0

Trong các phiên bản trước, MongoDB trả về phần tử đầu tiên (
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
260) trong mảng
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
247 khớp với điều kiện truy vấn; . e. phép chiếu vị trí
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
230 được ưu tiên và
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
263 không hoạt động.
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
264 không loại trừ bất kỳ trường tài liệu nào khác

phiên

Số 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

> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
265 (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 động

Cá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

> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
266 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
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
267 hoặc
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
268 lớn hơn 30 phút.

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

> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
269. 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
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
270 của
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
213. 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 lâu 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

> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
272 và định kỳ làm mới phiên bằng cách sử dụng lệnh
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
266. Ví dụ

/\. "$
1

Trong hoạt động ví dụ, phương pháp

> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
269 được liên kết với một phiên rõ ràng. Con trỏ được cấu hình với
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
267 để ngăn máy chủ đóng con trỏ nếu không hoạt động. Vòng lặp
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
276 bao gồm một khối sử dụng
> db.test.save({})
> db.test.save({name: []})
> db.test.save({name: ['George']})
> db.test.save({name: ['George', 'Raymond']})
> db.test.save({name: ['George', 'Raymond', 'Richard']})
> db.test.save({name: ['George', 'Raymond', 'Richard', 'Martin']})
> db.test.find({$nor: [{name: {$exists: false}}, {name: {$size: 0}}, {name: {$size: 1}}]})
{ "_id" : ObjectId("511907e3fb13145a3d2e225b"), "name" : [ "George", "Raymond" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225c"), "name" : [ "George", "Raymond", "Richard" ] }
{ "_id" : ObjectId("511907e3fb13145a3d2e225d"), "name" : [ "George", "Raymond", "Richard", "Martin" ] }
>
266 để 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

Kích thước của MongoDB là bao nhiêu?

Kích thước tài liệu BSON tối đa là 16 megabyte . 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.

Làm cách nào để tìm kích thước trong MongoDB?

Có lẽ cách nhanh nhất và dễ dàng nhất để kiểm tra kích thước của bộ sưu tập MongoDB là sử dụng db. bộ sưu tập. phương thức dataSize() . Phương thức này trả về kích thước của bộ sưu tập theo byte.

Kích thước tối đa của MongoDB là bao nhiêu?

Kích thước tối đa mà một tài liệu riêng lẻ có thể có trong MongoDB là 16 MB với độ sâu lồng nhau là 100 cấp độ .

Làm cách nào để kiểm tra kích thước mảng trong MongoDB?

Toán tử $size khớp với bất kỳ mảng nào với số phần tử được chỉ định bởi đối số. Ví dụ. db. thu thập.