Hướng dẫn update one mongodb - cập nhật một mongodb

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


Sử dụng menu chọn ngôn ngữ của bạn ở phía trên bên phải để đặt ngôn ngữ của các ví dụ sau.Select your language drop-down menu in the upper-right to set the language of the following examples.


Ghi chú

Bắt đầu từ MongoDB 4.2, MongoDB có thể chấp nhận một đường ống tổng hợp để chỉ định các sửa đổi để thực hiện thay vì tài liệu cập nhật. Xem trang tham chiếu phương thức để biết chi tiết.

Tất cả các hoạt động viết trong MongoDB đều là nguyên tử ở cấp độ của một tài liệu. Để biết thêm thông tin về MongoDB và tính nguyên tử, hãy xem tính nguyên tử và giao dịch.

Sau khi được đặt, bạn không thể cập nhật giá trị của trường

db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
0 và bạn cũng không thể thay thế một tài liệu hiện có bằng một tài liệu thay thế có giá trị trường
db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
0 khác nhau.

Đối với các hoạt động ghi, MongoDB bảo tồn thứ tự của các trường tài liệu ngoại trừ các trường hợp sau:

  • Trường

    db.collection.updateOne(
    ,
    { $set: { status: "D" }, $inc: { quantity: 2 } },
    ...
    )
    0 luôn là trường đầu tiên trong tài liệu.

  • Các bản cập nhật bao gồm

    db.collection.updateOne(
    ,
    { $set: { status: "D" }, $inc: { quantity: 2 } },
    ...
    )
    3 tên trường có thể dẫn đến việc sắp xếp lại các trường trong tài liệu.

Với các mối quan tâm ghi, bạn có thể chỉ định mức độ xác nhận được yêu cầu từ MongoDB cho các hoạt động viết. Để biết chi tiết, xem Viết mối quan tâm.

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

db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
4

Quan trọng

Phương pháp Mongosh

Trang này ghi lại một phương thức

db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
5. Đây không phải là tài liệu cho trình điều khiển dành riêng cho ngôn ngữ, chẳng hạn như Node.js.
db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
5
method. This is not the documentation for a language-specific driver, such as Node.js.

Đối với trình điều khiển API MongoDB, hãy tham khảo tài liệu trình điều khiển MongoDB dành riêng cho ngôn ngữ.MongoDB driver documentation.

Cập nhật một tài liệu duy nhất trong bộ sưu tập dựa trên bộ lọc.

Phương thức

db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
6 có cú pháp sau:
db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
6
method has the following syntax:

db.collection.updateOne(
,
,
{
upsert: ,
writeConcern: <document>,
collation: <document>,
arrayFilters: [ , ... ],
hint: // Available starting in MongoDB 4.2.1
}
)

Phương thức

db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
7 lấy các tham số sau:
db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
7
method takes the following parameters:

Tham số

Loại hình

Sự mô tả

lọc

tài liệu

Các tiêu chí lựa chọn cho bản cập nhật. Các bộ chọn truy vấn tương tự như trong phương thức

db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
8 có sẵn.

Chỉ định một tài liệu trống

db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
9 để cập nhật tài liệu đầu tiên được trả về trong bộ sưu tập.

cập nhật

tài liệu hoặc đường ống

Các sửa đổi để áp dụng. Có thể là một trong những điều sau đây:

Cập nhật tài liệu

Chỉ chứa các biểu thức toán tử cập nhật.

Để biết thêm thông tin, hãy xem Cập nhật với tài liệu biểu thức vận hành cập nhậtUpdate with an Update Operator Expressions Document

Đường ống tổng hợp (bắt đầu từ MongoDB 4.2) (Starting in MongoDB 4.2)

Chỉ chứa các giai đoạn tổng hợp sau:

  • db.collection.updateOne(
    ,
    [
    { $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
    { $unset: [ "misc1", "misc2" ] }
    ]
    ...
    )
    0 và bí danh của nó
    db.collection.updateOne(
    ,
    [
    { $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
    { $unset: [ "misc1", "misc2" ] }
    ]
    ...
    )
    1

  • db.collection.updateOne(
    ,
    [
    { $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
    { $unset: [ "misc1", "misc2" ] }
    ]
    ...
    )
    2 và bí danh của nó
    db.collection.updateOne(
    ,
    [
    { $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
    { $unset: [ "misc1", "misc2" ] }
    ]
    ...
    )
    3

  • db.collection.updateOne(
    ,
    [
    { $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
    { $unset: [ "misc1", "misc2" ] }
    ]
    ...
    )
    4 và bí danh của nó
    db.collection.updateOne(
    ,
    [
    { $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
    { $unset: [ "misc1", "misc2" ] }
    ]
    ...
    )
    5

Để biết thêm thông tin, hãy xem Cập nhật với một đường ống tổng hợp.Update with an Aggregation Pipeline.

Để cập nhật với một tài liệu thay thế, xem

db.collection.updateOne(
,
[
{ $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
{ $unset: [ "misc1", "misc2" ] }
]
...
)
6

db.collection.updateOne(
,
[
{ $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
{ $unset: [ "misc1", "misc2" ] }
]
...
)
7

boolean

Không bắt buộc. Khi

db.collection.updateOne(
,
[
{ $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
{ $unset: [ "misc1", "misc2" ] }
]
...
)
8,
db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
6 hoặc:
db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
6
either:

  • Tạo một tài liệu mới nếu không có tài liệu nào khớp với

    { _id: , : null } // _id of the document missing shard key

    0. Để biết thêm chi tiết, hãy xem hành vi UPSERT.

  • Cập nhật một tài liệu duy nhất phù hợp với

    { _id: , : null } // _id of the document missing shard key

    0.

Để tránh nhiều UPSERT, hãy đảm bảo rằng (các) trường

{ _id: , : null } // _id of the document missing shard key

0 được lập chỉ mục duy nhất.

Mặc định là

{ _id: , : null } // _id of the document missing shard key

3, không chèn một tài liệu mới khi không tìm thấy khớp nào.

{ _id: , : null } // _id of the document missing shard key

4

tài liệu

Các tiêu chí lựa chọn cho bản cập nhật. Các bộ chọn truy vấn tương tự như trong phương thức

db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
8 có sẵn.

Chỉ định một tài liệu trống

db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
9 để cập nhật tài liệu đầu tiên được trả về trong bộ sưu tập.

{ _id: , : null } // _id of the document missing shard key

5

tài liệu

Optional.

Các tiêu chí lựa chọn cho bản cập nhật. Các bộ chọn truy vấn tương tự như trong phương thức

db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
8 có sẵn.

Chỉ định một tài liệu trống

db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
9 để cập nhật tài liệu đầu tiên được trả về trong bộ sưu tập.

cập nhật

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}

tài liệu hoặc đường ống

Các sửa đổi để áp dụng. Có thể là một trong những điều sau đây:

Cập nhật tài liệu

Chỉ chứa các biểu thức toán tử cập nhật.

{ _id: , : null } // _id of the document missing shard key

8

Để biết thêm thông tin, hãy xem Cập nhật với tài liệu biểu thức vận hành cập nhật

Đường ống tổng hợp (bắt đầu từ MongoDB 4.2)

Chỉ chứa các giai đoạn tổng hợp sau:

Ghi chú

{ "_id" : 1, "name" : "Central Perk Cafe", "Borough" : "Manhattan" },
{ "_id" : 2, "name" : "Rock A Feller Bar and Grill", "Borough" : "Queens", "violations" : 2 },
{ "_id" : 3, "name" : "Empire State Pub", "Borough" : "Brooklyn", "violations" : 0 }
0 phải bắt đầu bằng chữ thường và chỉ chứa các ký tự chữ và số.

Bạn có thể bao gồm cùng một định danh nhiều lần trong tài liệu cập nhật; Tuy nhiên, đối với mỗi định danh riêng biệt (

{ "_id" : 1, "name" : "Central Perk Cafe", "Borough" : "Manhattan" },
{ "_id" : 2, "name" : "Rock A Feller Bar and Grill", "Borough" : "Queens", "violations" : 2 },
{ "_id" : 3, "name" : "Empire State Pub", "Borough" : "Brooklyn", "violations" : 0 }
1) trong tài liệu cập nhật, bạn phải chỉ định chính xác một tài liệu bộ lọc mảng tương ứng. Đó là, bạn không thể chỉ định nhiều tài liệu bộ lọc mảng cho cùng một định danh. Ví dụ: nếu câu lệnh Update bao gồm Mã định danh
{ "_id" : 1, "name" : "Central Perk Cafe", "Borough" : "Manhattan" },
{ "_id" : 2, "name" : "Rock A Feller Bar and Grill", "Borough" : "Queens", "violations" : 2 },
{ "_id" : 3, "name" : "Empire State Pub", "Borough" : "Brooklyn", "violations" : 0 }
2 (có thể nhiều lần), bạn không thể chỉ định các mục sau cho

{ _id: , : null } // _id of the document missing shard key

8 bao gồm 2 tài liệu bộ lọc riêng biệt cho
{ "_id" : 1, "name" : "Central Perk Cafe", "Borough" : "Manhattan" },
{ "_id" : 2, "name" : "Rock A Feller Bar and Grill", "Borough" : "Queens", "violations" : 2 },
{ "_id" : 3, "name" : "Empire State Pub", "Borough" : "Brooklyn", "violations" : 0 }
2:exactly one corresponding array filter document. That is, you cannot specify multiple array filter documents for the same identifier. For example, if the update statement includes the identifier
{ "_id" : 1, "name" : "Central Perk Cafe", "Borough" : "Manhattan" },
{ "_id" : 2, "name" : "Rock A Feller Bar and Grill", "Borough" : "Queens", "violations" : 2 },
{ "_id" : 3, "name" : "Empire State Pub", "Borough" : "Brooklyn", "violations" : 0 }
2 (possibly multiple times), you cannot specify the following for

{ _id: , : null } // _id of the document missing shard key

8 that includes 2 separate filter documents for
{ "_id" : 1, "name" : "Central Perk Cafe", "Borough" : "Manhattan" },
{ "_id" : 2, "name" : "Rock A Feller Bar and Grill", "Borough" : "Queens", "violations" : 2 },
{ "_id" : 3, "name" : "Empire State Pub", "Borough" : "Brooklyn", "violations" : 0 }
2:

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]

Tuy nhiên, bạn có thể chỉ định các điều kiện hợp chất trên cùng một định danh trong một tài liệu bộ lọc duy nhất, chẳng hạn như trong các ví dụ sau:

// Example 1
[
{ $or: [{"x.a": {$gt: 85}}, {"x.b": {$gt: 80}}] }
]
// Example 2
[
{ $and: [{"x.a": {$gt: 85}}, {"x.b": {$gt: 80}}] }
]
// Example 3
[
{ "x.a": { $gt: 85 }, "x.b": { $gt: 80 } }
]

Để biết ví dụ, xem Chỉ định

{ _id: , : null } // _id of the document missing shard key

8 để biết các hoạt động cập nhật mảng.Specify

{ _id: , : null } // _id of the document missing shard key

8 for an Array Update Operations.

dấu

Tài liệu hoặc chuỗi

Không bắt buộc. Một tài liệu hoặc chuỗi chỉ định chỉ mục để sử dụng để hỗ trợ vị từ truy vấn.query predicate.

Tùy chọn có thể lấy một tài liệu đặc tả chỉ mục hoặc chuỗi tên chỉ mục.

Nếu bạn chỉ định một chỉ mục không tồn tại, các lỗi hoạt động.

Ví dụ, xem Chỉ định

{ "_id" : 1, "name" : "Central Perk Cafe", "Borough" : "Manhattan" },
{ "_id" : 2, "name" : "Rock A Feller Bar and Grill", "Borough" : "Queens", "violations" : 2 },
{ "_id" : 3, "name" : "Empire State Pub", "Borough" : "Brooklyn", "violations" : 0 }
6 cho các hoạt động cập nhật.Specify
{ "_id" : 1, "name" : "Central Perk Cafe", "Borough" : "Manhattan" },
{ "_id" : 2, "name" : "Rock A Feller Bar and Grill", "Borough" : "Queens", "violations" : 2 },
{ "_id" : 3, "name" : "Empire State Pub", "Borough" : "Brooklyn", "violations" : 0 }
6 for Update Operations.

Mới trong phiên bản 4.2.1.

Phương thức trả về một tài liệu chứa:

  • { "_id" : 1, "name" : "Central Perk Cafe", "Borough" : "Manhattan" },
    { "_id" : 2, "name" : "Rock A Feller Bar and Grill", "Borough" : "Queens", "violations" : 2 },
    { "_id" : 3, "name" : "Empire State Pub", "Borough" : "Brooklyn", "violations" : 0 }
    7 chứa số lượng tài liệu phù hợp

  • { "_id" : 1, "name" : "Central Perk Cafe", "Borough" : "Manhattan" },
    { "_id" : 2, "name" : "Rock A Feller Bar and Grill", "Borough" : "Queens", "violations" : 2 },
    { "_id" : 3, "name" : "Empire State Pub", "Borough" : "Brooklyn", "violations" : 0 }
    8 chứa số lượng tài liệu đã sửa đổi

  • { "_id" : 1, "name" : "Central Perk Cafe", "Borough" : "Manhattan" },
    { "_id" : 2, "name" : "Rock A Feller Bar and Grill", "Borough" : "Queens", "violations" : 2 },
    { "_id" : 3, "name" : "Empire State Pub", "Borough" : "Brooklyn", "violations" : 0 }
    9 chứa
    db.collection.updateOne(
    ,
    { $set: { status: "D" }, $inc: { quantity: 2 } },
    ...
    )
    0 cho tài liệu UPSERTED.

  • Một boolean

    try {
    db.restaurant.updateOne(
    { "name" : "Central Perk Cafe" },
    { $set: { "violations" : 3 } }
    );
    } catch (e) {
    print(e);
    }
    1 là
    db.collection.updateOne(
    ,
    [
    { $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
    { $unset: [ "misc1", "misc2" ] }
    ]
    ...
    )
    8 nếu hoạt động chạy với mối quan tâm ghi hoặc

    { _id: , : null } // _id of the document missing shard key

    3

Để xem các chỉ mục được sử dụng, bạn có thể sử dụng đường ống

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
41:

  • Mẹo

  • Xem thêm:

  • Khi triển khai chạy với

    try {
    db.restaurant.updateOne(
    { "name" : "Central Perk Cafe" },
    { $set: { "violations" : 3 } }
    );
    } catch (e) {
    print(e);
    }
    4, người dùng phải có quyền truy cập bao gồm các đặc quyền sau:

try {
db.restaurant.updateOne(
{ "name" : "Central Perk Cafe" },
{ $set: { "violations" : 3 } }
);
} catch (e) {
print(e);
}
5 Hành động trên (các) bộ sưu tập được chỉ định.

db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
7 Tìm tài liệu đầu tiên phù hợp với bộ lọc và áp dụng các sửa đổi cập nhật được chỉ định. finds the first document that matches the filter and applies the specified update modifications.

Đối với thông số kỹ thuật cập nhật, phương thức

db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
7 có thể chấp nhận một tài liệu chỉ chứa các biểu thức toán tử cập nhật.update specifications, the
db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
7
method can accept a document that only contains update operator expressions.

Ví dụ:

db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)

Bắt đầu từ MongoDB 4.2, phương pháp

db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
7 có thể chấp nhận đường ống tổng hợp

{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

2 chỉ định các sửa đổi để thực hiện. Đường ống có thể bao gồm các giai đoạn sau:
db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
7
method can accept an aggregation pipeline

{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

2 that specifies the modifications to perform. The pipeline can consist of the following stages:

  • db.collection.updateOne(
    ,
    [
    { $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
    { $unset: [ "misc1", "misc2" ] }
    ]
    ...
    )
    0 và bí danh của nó
    db.collection.updateOne(
    ,
    [
    { $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
    { $unset: [ "misc1", "misc2" ] }
    ]
    ...
    )
    1

  • db.collection.updateOne(
    ,
    [
    { $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
    { $unset: [ "misc1", "misc2" ] }
    ]
    ...
    )
    2 và bí danh của nó
    db.collection.updateOne(
    ,
    [
    { $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
    { $unset: [ "misc1", "misc2" ] }
    ]
    ...
    )
    3

  • db.collection.updateOne(
    ,
    [
    { $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
    { $unset: [ "misc1", "misc2" ] }
    ]
    ...
    )
    4 và bí danh của nó
    db.collection.updateOne(
    ,
    [
    { $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
    { $unset: [ "misc1", "misc2" ] }
    ]
    ...
    )
    5

Sử dụng đường ống tổng hợp cho phép một câu lệnh cập nhật biểu cảm hơn, chẳng hạn như biểu thị các bản cập nhật có điều kiện dựa trên các giá trị trường hiện tại hoặc cập nhật một trường bằng cách sử dụng giá trị của (các) trường khác.

Ví dụ:

db.collection.updateOne(
,
[
{ $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
{ $unset: [ "misc1", "misc2" ] }
]
...
)

Ghi chú

Nếu bạn chỉ định một chỉ mục không tồn tại, các lỗi hoạt động.

Lệnh cập nhật trả về như sau:Update with Aggregation Pipeline.

Để xem các chỉ mục được sử dụng, bạn có thể sử dụng đường ống

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
41:
db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
7
creates a new document based on the

{ _id: , : null } // _id of the document missing shard key

0 criteria and
try {
db.restaurant.updateOne(
{ "name" : "Central Perk Cafe" },
{ $set: { "violations" : 3 } }
);
} catch (e) {
print(e);
}
5 modifications. See Update with Upsert.

Mẹofilter. For additional

db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
7 behavior on a sharded collection, see Sharded Collections.

Xem thêm:

db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
7 Tìm tài liệu đầu tiên phù hợp với bộ lọc và áp dụng các sửa đổi cập nhật được chỉ định.
db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
7
on a sharded collection:

  • Đối với thông số kỹ thuật cập nhật, phương thức

    db.collection.updateOne(
    ,
    { $set: { status: "D" }, $inc: { quantity: 2 } },
    ...
    )
    7 có thể chấp nhận một tài liệu chỉ chứa các biểu thức toán tử cập nhật.filter).

  • Ví dụ:filter must include the shard key.

Bắt đầu từ MongoDB 4.2, phương pháp

db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
7 có thể chấp nhận đường ống tổng hợp

{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

2 chỉ định các sửa đổi để thực hiện. Đường ống có thể bao gồm các giai đoạn sau:in conjunction with another filter condition (such as on the
db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
0 field). For example:

{ _id: , : null } // _id of the document missing shard key

db.collection.updateOne(
,
[
{ $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
{ $unset: [ "misc1", "misc2" ] }
]
...
)
0 và bí danh của nó
db.collection.updateOne(
,
[
{ $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
{ $unset: [ "misc1", "misc2" ] }
]
...
)
1

db.collection.updateOne( , [ { $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } }, { $unset: [ "misc1", "misc2" ] } ] ...)2 và bí danh của nó db.collection.updateOne( , [ { $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } }, { $unset: [ "misc1", "misc2" ] } ] ...)3

db.collection.updateOne(
,
[
{ $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
{ $unset: [ "misc1", "misc2" ] }
]
...
)
4 và bí danh của nó
db.collection.updateOne(
,
[
{ $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
{ $unset: [ "misc1", "misc2" ] }
]
...
)
5

Sử dụng đường ống tổng hợp cho phép một câu lệnh cập nhật biểu cảm hơn, chẳng hạn như biểu thị các bản cập nhật có điều kiện dựa trên các giá trị trường hiện tại hoặc cập nhật một trường bằng cách sử dụng giá trị của (các) trường khác.existing shard key value with

db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
7

  • db.collection.updateOne(
    ,
    [
    { $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
    { $unset: [ "misc1", "misc2" ] }
    ]
    ...
    )
    1 và
    db.collection.updateOne(
    ,
    [
    { $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
    { $unset: [ "misc1", "misc2" ] }
    ]
    ...
    )
    3 được sử dụng trong đường ống liên quan đến các giai đoạn tổng hợp lần lượtmust run on a
    collation: {
    locale: ,
    caseLevel: ,
    caseFirst: ,
    strength: ,
    numericOrdering: ,
    alternate: ,
    maxVariable: ,
    backwards:
    }
    20. Do not issue the operation directly on the shard.

  • Để biết ví dụ, xem cập nhật với đường ống tổng hợp.must run either in a transaction or as a retryable write.

  • Bạn phải bao gồm một bộ lọc bình đẳng trên phím Shard đầy đủ.must include an equality filter on the full shard key.

Xem thêm

db.collection.updateOne(
,
[
{ $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
{ $unset: [ "misc1", "misc2" ] }
]
...
)
7 trên một bộ sưu tập Sharded.
db.collection.updateOne(
,
[
{ $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
{ $unset: [ "misc1", "misc2" ] }
]
...
)
7 on a Sharded Collection.

Bắt đầu từ phiên bản 4.4, các tài liệu trong bộ sưu tập Sharded có thể bị thiếu các trường Key Shard. Để sử dụng

db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
7 để đặt khóa Shard bị thiếu của tài liệu, bạn phải chạy trên
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
20. Không phát hành hoạt động trực tiếp trên Shard.
db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
7
to set the document's missing shard key, you must run on a
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
20. Do not issue the operation directly on the shard.

Ngoài ra, các yêu cầu sau đây cũng được áp dụng:

Nhiệm vụ

Yêu cầu

Để đặt thành

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
16

  • Yêu cầu bộ lọc bình đẳng trên phím Shard đầy đủ nếu

    collation: {
    locale: ,
    caseLevel: ,
    caseFirst: ,
    strength: ,
    numericOrdering: ,
    alternate: ,
    maxVariable: ,
    backwards:
    }
    05.

Để đặt thành giá trị không

  • Phải được thực hiện trong một giao dịch hoặc dưới dạng viết có thể thử lại. be performed either inside a transaction or as a retryable write.

  • Yêu cầu bộ lọc bình đẳng trên phím Shard đầy đủ nếu

    collation: {
    locale: ,
    caseLevel: ,
    caseFirst: ,
    strength: ,
    numericOrdering: ,
    alternate: ,
    maxVariable: ,
    backwards:
    }
    27.

Mẹo

Vì một giá trị khóa bị thiếu được trả về như là một phần của khớp bình đẳng null, để tránh cập nhật khóa có giá trị null, bao gồm các điều kiện truy vấn bổ sung (như trên trường

db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
0) nếu phù hợp.

Xem thêm:

  • db.collection.updateOne(
    ,
    [
    { $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
    { $unset: [ "misc1", "misc2" ] }
    ]
    ...
    )
    7 trên bộ sưu tập Sharded

  • Thiếu các trường Key Shard

db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
6 không tương thích với
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
31 is not compatible with
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
31

db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
7 có thể được sử dụng bên trong các giao dịch đa tài liệu. can be used inside multi-document transactions.

Quan trọng

Trong hầu hết các trường hợp, giao dịch đa tài liệu phát sinh chi phí hiệu suất lớn hơn so với ghi tài liệu đơn lẻ và sự sẵn có của các giao dịch đa tài liệu không nên là một sự thay thế cho thiết kế lược đồ hiệu quả. Đối với nhiều kịch bản, mô hình dữ liệu được chuẩn hóa (tài liệu và mảng nhúng) sẽ tiếp tục tối ưu cho các trường hợp dữ liệu và sử dụng của bạn. Đó là, đối với nhiều kịch bản, mô hình hóa dữ liệu của bạn một cách thích hợp sẽ giảm thiểu nhu cầu cho các giao dịch đa tài liệu.

Để biết các cân nhắc sử dụng giao dịch bổ sung (như giới hạn thời gian chạy và giới hạn kích thước oplog), xem thêm các cân nhắc sản xuất.

Bắt đầu từ MongoDB 4.4, bạn có thể tạo các bộ sưu tập và chỉ mục bên trong giao dịch đa tài liệu nếu giao dịch không phải là giao dịch ghi chéo.not a cross-shard write transaction.

Cụ thể, trong MongoDB 4.4 trở lên,

db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
7 với
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
05 có thể được chạy trên một bộ sưu tập hiện có hoặc một bộ sưu tập không tồn tại. Nếu chạy trên một bộ sưu tập không tồn tại, thao tác sẽ tạo ra bộ sưu tập.
db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
7
with
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
05 can be run on an existing collection or a non-existing collection. If run on a non-existing collection, the operation creates the collection.

Trong MongoDB 4.2 và trước đó, hoạt động phải được chạy trên một bộ sưu tập hiện có.

Mẹo

Vì một giá trị khóa bị thiếu được trả về như là một phần của khớp bình đẳng null, để tránh cập nhật khóa có giá trị null, bao gồm các điều kiện truy vấn bổ sung (như trên trường db.collection.updateOne( , { $set: { status: "D" }, $inc: { quantity: 2 } }, ...)0) nếu phù hợp.

Xem thêm:

Bộ sưu tập

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
35 chứa các tài liệu sau:

{ "_id" : 1, "name" : "Central Perk Cafe", "Borough" : "Manhattan" },
{ "_id" : 2, "name" : "Rock A Feller Bar and Grill", "Borough" : "Queens", "violations" : 2 },
{ "_id" : 3, "name" : "Empire State Pub", "Borough" : "Brooklyn", "violations" : 0 }

Hoạt động sau đây cập nhật một tài liệu duy nhất trong đó

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
36 với trường
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
37:

try {
db.restaurant.updateOne(
{ "name" : "Central Perk Cafe" },
{ $set: { "violations" : 3 } }
);
} catch (e) {
print(e);
}

Hoạt động trả về:

{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

Nếu không tìm thấy trận đấu nào, hoạt động thay vì trả về:

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
0

Cài đặt

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
05 sẽ chèn tài liệu nếu không tìm thấy khớp. Xem Cập nhật với UPSERTUpdate with Upsert

Bắt đầu từ MongoDB 4.2,

db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
7 có thể sử dụng đường ống tổng hợp để cập nhật. Đường ống có thể bao gồm các giai đoạn sau:
db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
7
can use an aggregation pipeline for the update. The pipeline can consist of the following stages:

  • db.collection.updateOne(
    ,
    [
    { $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
    { $unset: [ "misc1", "misc2" ] }
    ]
    ...
    )
    0 và bí danh của nó
    db.collection.updateOne(
    ,
    [
    { $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
    { $unset: [ "misc1", "misc2" ] }
    ]
    ...
    )
    1

  • db.collection.updateOne(
    ,
    [
    { $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
    { $unset: [ "misc1", "misc2" ] }
    ]
    ...
    )
    2 và bí danh của nó
    db.collection.updateOne(
    ,
    [
    { $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
    { $unset: [ "misc1", "misc2" ] }
    ]
    ...
    )
    3

  • db.collection.updateOne(
    ,
    [
    { $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
    { $unset: [ "misc1", "misc2" ] }
    ]
    ...
    )
    4 và bí danh của nó
    db.collection.updateOne(
    ,
    [
    { $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
    { $unset: [ "misc1", "misc2" ] }
    ]
    ...
    )
    5

Sử dụng đường ống tổng hợp cho phép một câu lệnh cập nhật biểu cảm hơn, chẳng hạn như biểu thị các bản cập nhật có điều kiện dựa trên các giá trị trường hiện tại hoặc cập nhật một trường bằng cách sử dụng giá trị của (các) trường khác.

Các ví dụ sau sử dụng đường ống tổng hợp để sửa đổi một trường bằng cách sử dụng các giá trị của các trường khác trong tài liệu.

Tạo bộ sưu tập

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
46 với các tài liệu sau:

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
1

Giả sử rằng thay vì các trường

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
47 và
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
48 riêng biệt trong tài liệu đầu tiên, bạn muốn thu thập chúng thành một trường
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
49, như tài liệu thứ hai. Hoạt động cập nhật sau đây sử dụng đường ống tổng hợp để:

  • Thêm trường

    collation: {
    locale: ,
    caseLevel: ,
    caseFirst: ,
    strength: ,
    numericOrdering: ,
    alternate: ,
    maxVariable: ,
    backwards:
    }
    49 mới và đặt trường
    collation: {
    locale: ,
    caseLevel: ,
    caseFirst: ,
    strength: ,
    numericOrdering: ,
    alternate: ,
    maxVariable: ,
    backwards:
    }
    51.

  • Xóa các trường

    collation: {
    locale: ,
    caseLevel: ,
    caseFirst: ,
    strength: ,
    numericOrdering: ,
    alternate: ,
    maxVariable: ,
    backwards:
    }
    47 và
    collation: {
    locale: ,
    caseLevel: ,
    caseFirst: ,
    strength: ,
    numericOrdering: ,
    alternate: ,
    maxVariable: ,
    backwards:
    }
    48 cho tất cả các tài liệu trong bộ sưu tập.

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
2

Ghi chú

db.collection.updateOne(
,
[
{ $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
{ $unset: [ "misc1", "misc2" ] }
]
...
)
1 và
db.collection.updateOne(
,
[
{ $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
{ $unset: [ "misc1", "misc2" ] }
]
...
)
3 được sử dụng trong đường ống liên quan đến các giai đoạn tổng hợp lần lượt

Giai đoạn đầu tiên

Giai đoạn

db.collection.updateOne(
,
[
{ $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
{ $unset: [ "misc1", "misc2" ] }
]
...
)
1:

  • Tạo một trường mảng mới

    collation: {
    locale: ,
    caseLevel: ,
    caseFirst: ,
    strength: ,
    numericOrdering: ,
    alternate: ,
    maxVariable: ,
    backwards:
    }
    49 có các phần tử là nội dung hiện tại của các trường
    collation: {
    locale: ,
    caseLevel: ,
    caseFirst: ,
    strength: ,
    numericOrdering: ,
    alternate: ,
    maxVariable: ,
    backwards:
    }
    47 và
    collation: {
    locale: ,
    caseLevel: ,
    caseFirst: ,
    strength: ,
    numericOrdering: ,
    alternate: ,
    maxVariable: ,
    backwards:
    }
    48 và

  • Đặt trường

    collation: {
    locale: ,
    caseLevel: ,
    caseFirst: ,
    strength: ,
    numericOrdering: ,
    alternate: ,
    maxVariable: ,
    backwards:
    }
    51 thành giá trị của biến tổng hợp
    collation: {
    locale: ,
    caseLevel: ,
    caseFirst: ,
    strength: ,
    numericOrdering: ,
    alternate: ,
    maxVariable: ,
    backwards:
    }
    65. Biến tổng hợp
    collation: {
    locale: ,
    caseLevel: ,
    caseFirst: ,
    strength: ,
    numericOrdering: ,
    alternate: ,
    maxVariable: ,
    backwards:
    }
    65 giải quyết được giá trị DateTime hiện tại và vẫn giữ nguyên trong suốt quá trình đường ống. Để truy cập các biến tổng hợp, tiền tố biến với các dấu hiệu đô la kép
    collation: {
    locale: ,
    caseLevel: ,
    caseFirst: ,
    strength: ,
    numericOrdering: ,
    alternate: ,
    maxVariable: ,
    backwards:
    }
    67 và kèm theo trích dẫn.

Giai đoạn thứ hai
db.collection.updateOne(
,
[
{ $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
{ $unset: [ "misc1", "misc2" ] }
]
...
)
3 loại bỏ các trường
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
47 và
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
48.

Sau lệnh, bộ sưu tập chứa các tài liệu sau:

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
3

Đường ống tổng hợp cho phép bản cập nhật thực hiện các bản cập nhật có điều kiện dựa trên các giá trị trường hiện tại cũng như sử dụng các giá trị trường hiện tại để tính toán giá trị trường riêng biệt.

Ví dụ: tạo bộ sưu tập

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
71 với các tài liệu sau:

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
4

Tài liệu thứ ba

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
72 bị thiếu các trường
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
73 và
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
74. Sử dụng một đường ống tổng hợp, bạn có thể cập nhật tài liệu với mức trung bình và lớp chữ cái được tính toán.

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
5

Ghi chú

db.collection.updateOne(
,
[
{ $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
{ $unset: [ "misc1", "misc2" ] }
]
...
)
1 và
db.collection.updateOne(
,
[
{ $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
{ $unset: [ "misc1", "misc2" ] }
]
...
)
3 được sử dụng trong đường ống liên quan đến các giai đoạn tổng hợp lần lượt

Giai đoạn đầu tiên

Giai đoạn

db.collection.updateOne(
,
[
{ $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
{ $unset: [ "misc1", "misc2" ] }
]
...
)
1:

  • Tạo một trường mảng mới

    collation: {
    locale: ,
    caseLevel: ,
    caseFirst: ,
    strength: ,
    numericOrdering: ,
    alternate: ,
    maxVariable: ,
    backwards:
    }
    49 có các phần tử là nội dung hiện tại của các trường
    collation: {
    locale: ,
    caseLevel: ,
    caseFirst: ,
    strength: ,
    numericOrdering: ,
    alternate: ,
    maxVariable: ,
    backwards:
    }
    47 và
    collation: {
    locale: ,
    caseLevel: ,
    caseFirst: ,
    strength: ,
    numericOrdering: ,
    alternate: ,
    maxVariable: ,
    backwards:
    }
    48 và

  • Đặt trường

    collation: {
    locale: ,
    caseLevel: ,
    caseFirst: ,
    strength: ,
    numericOrdering: ,
    alternate: ,
    maxVariable: ,
    backwards:
    }
    51 thành giá trị của biến tổng hợp
    collation: {
    locale: ,
    caseLevel: ,
    caseFirst: ,
    strength: ,
    numericOrdering: ,
    alternate: ,
    maxVariable: ,
    backwards:
    }
    65. Biến tổng hợp
    collation: {
    locale: ,
    caseLevel: ,
    caseFirst: ,
    strength: ,
    numericOrdering: ,
    alternate: ,
    maxVariable: ,
    backwards:
    }
    65 giải quyết được giá trị DateTime hiện tại và vẫn giữ nguyên trong suốt quá trình đường ống. Để truy cập các biến tổng hợp, tiền tố biến với các dấu hiệu đô la kép
    collation: {
    locale: ,
    caseLevel: ,
    caseFirst: ,
    strength: ,
    numericOrdering: ,
    alternate: ,
    maxVariable: ,
    backwards:
    }
    67 và kèm theo trích dẫn.

Giai đoạn thứ hai
db.collection.updateOne(
,
[
{ $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
{ $unset: [ "misc1", "misc2" ] }
]
...
)
3 loại bỏ các trường
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
47 và
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
48.

Sau lệnh, bộ sưu tập chứa các tài liệu sau:

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
6

Mẹo

Xem thêm:

Bộ sưu tập

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
35 chứa các tài liệu sau:

Hoạt động sau đây cập nhật một tài liệu duy nhất trong đó

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
36 với trường
collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
37:

Hoạt động trả về:

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
8

Nếu không tìm thấy trận đấu nào, hoạt động thay vì trả về:

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
9

Cài đặt

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
05 sẽ chèn tài liệu nếu không tìm thấy khớp. Xem Cập nhật với UPSERT

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
0

Bắt đầu từ MongoDB 4.2,

db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
7 có thể sử dụng đường ống tổng hợp để cập nhật. Đường ống có thể bao gồm các giai đoạn sau:

db.collection.updateOne(
,
[
{ $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
{ $unset: [ "misc1", "misc2" ] }
]
...
)
0 và bí danh của nó
db.collection.updateOne(
,
[
{ $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
{ $unset: [ "misc1", "misc2" ] }
]
...
)
1

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
1

Hoạt động trả về:

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
2

Cài đặt

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
05 sẽ chèn tài liệu nếu không tìm thấy khớp. Xem Cập nhật với UPSERT

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
3

Vì không có tài liệu nào khớp với bộ lọc và

db.collection.updateOne(
,
[
{ $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
{ $unset: [ "misc1", "misc2" ] }
]
...
)
7 là
db.collection.updateOne(
,
[
{ $set: { status: "Modified", comments: [ "$misc1", "$misc2" ] } },
{ $unset: [ "misc1", "misc2" ] }
]
...
)
8,
db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
6 đã chèn tài liệu với một tiêu chí
db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
0 được tạo và chỉ.
db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
6
inserted the document with a generated
db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
0 and the
try {
db.restaurant.updateOne(
{ "name" : "Central Perk Cafe" },
{ $set: { "violations" : 3 } }
);
} catch (e) {
print(e);
}
5 criteria only.

Đưa ra một bộ bản sao ba thành viên, thao tác sau đây chỉ định

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
11 của
// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
12,
// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
13 của
// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
14:

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
4

Nếu chính và ít nhất một thứ cấp xác nhận mỗi hoạt động ghi trong vòng 100 mili giây, nó sẽ trả về:

{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

Nếu sự thừa nhận mất nhiều thời gian hơn giới hạn

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
13, thì ngoại lệ sau được ném:

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

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
6

Bảng sau đây giải thích các giá trị có thể của

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
16:

Nguồn gốc

Sự mô tả

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
17

Mối quan tâm ghi được chỉ định trong ứng dụng.

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
18

Mối quan tâm ghi có nguồn gốc từ một giá trị mặc định được xác định tùy chỉnh. Xem

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
19

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
20

Mối quan tâm ghi có nguồn gốc từ trường

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
21 của bộ bản sao.

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
22

Mối quan tâm ghi có nguồn gốc từ máy chủ không có tất cả các thông số kỹ thuật viết khác.

Đối chiếu cho phép người dùng chỉ định các quy tắc cụ thể về ngôn ngữ để so sánh chuỗi, chẳng hạn như các quy tắc cho Lettercase và Dấu nhấn.

Bộ sưu tập

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
23 có các tài liệu sau:

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
7

Hoạt động sau bao gồm tùy chọn đối chiếu:

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
8

Bắt đầu trong MongoDB 3.6, khi cập nhật trường mảng, bạn có thể chỉ định

{ _id: , : null } // _id of the document missing shard key

8 xác định các phần tử mảng nào để cập nhật.

Tạo bộ sưu tập

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
25 với các tài liệu sau:

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
9

Để sửa đổi tất cả các yếu tố lớn hơn hoặc bằng

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
14 trong mảng
// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
27, hãy sử dụng toán tử vị trí được lọc

{ _id: , : null } // _id of the document missing shard key

9 với tùy chọn

{ _id: , : null } // _id of the document missing shard key

8 trong phương thức
db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
7:
db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
7
method:

// Example 1
[
{ $or: [{"x.a": {$gt: 85}}, {"x.b": {$gt: 80}}] }
]
// Example 2
[
{ $and: [{"x.a": {$gt: 85}}, {"x.b": {$gt: 80}}] }
]
// Example 3
[
{ "x.a": { $gt: 85 }, "x.b": { $gt: 80 } }
]
0

Hoạt động cập nhật trường

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
27 của một tài liệu và sau khi hoạt động, bộ sưu tập có các tài liệu sau:

// Example 1
[
{ $or: [{"x.a": {$gt: 85}}, {"x.b": {$gt: 80}}] }
]
// Example 2
[
{ $and: [{"x.a": {$gt: 85}}, {"x.b": {$gt: 80}}] }
]
// Example 3
[
{ "x.a": { $gt: 85 }, "x.b": { $gt: 80 } }
]
1

Tạo bộ sưu tập

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
32 với các tài liệu sau:

// Example 1
[
{ $or: [{"x.a": {$gt: 85}}, {"x.b": {$gt: 80}}] }
]
// Example 2
[
{ $and: [{"x.a": {$gt: 85}}, {"x.b": {$gt: 80}}] }
]
// Example 3
[
{ "x.a": { $gt: 85 }, "x.b": { $gt: 80 } }
]
2

Để sửa đổi giá trị của trường

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
33 cho tất cả các phần tử trong mảng
// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
27 trong đó cấp lớn hơn hoặc bằng
// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
35, hãy sử dụng toán tử vị trí được lọc

{ _id: , : null } // _id of the document missing shard key

9 với

{ _id: , : null } // _id of the document missing shard key

8 trong phương thức
db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
7:
db.collection.updateOne(
,
{ $set: { status: "D" }, $inc: { quantity: 2 } },
...
)
7
method:

// Example 1
[
{ $or: [{"x.a": {$gt: 85}}, {"x.b": {$gt: 80}}] }
]
// Example 2
[
{ $and: [{"x.a": {$gt: 85}}, {"x.b": {$gt: 80}}] }
]
// Example 3
[
{ "x.a": { $gt: 85 }, "x.b": { $gt: 80 } }
]
3

Hoạt động cập nhật mảng của một tài liệu duy nhất và sau khi hoạt động, bộ sưu tập có các tài liệu sau:

// Example 1
[
{ $or: [{"x.a": {$gt: 85}}, {"x.b": {$gt: 80}}] }
]
// Example 2
[
{ $and: [{"x.a": {$gt: 85}}, {"x.b": {$gt: 80}}] }
]
// Example 3
[
{ "x.a": { $gt: 85 }, "x.b": { $gt: 80 } }
]
4

Mới trong phiên bản 4.2.1.

Tạo bộ sưu tập mẫu

collation: {
locale: ,
caseLevel: ,
caseFirst: ,
strength: ,
numericOrdering: ,
alternate: ,
maxVariable: ,
backwards:
}
46 với các tài liệu sau:

// Example 1
[
{ $or: [{"x.a": {$gt: 85}}, {"x.b": {$gt: 80}}] }
]
// Example 2
[
{ $and: [{"x.a": {$gt: 85}}, {"x.b": {$gt: 80}}] }
]
// Example 3
[
{ "x.a": { $gt: 85 }, "x.b": { $gt: 80 } }
]
5

Tạo các chỉ mục sau trên bộ sưu tập:

// Example 1
[
{ $or: [{"x.a": {$gt: 85}}, {"x.b": {$gt: 80}}] }
]
// Example 2
[
{ $and: [{"x.a": {$gt: 85}}, {"x.b": {$gt: 80}}] }
]
// Example 3
[
{ "x.a": { $gt: 85 }, "x.b": { $gt: 80 } }
]
6

Hoạt động cập nhật sau đây gợi ý rõ ràng để sử dụng chỉ mục

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
40:

Ghi chú

Nếu bạn chỉ định một chỉ mục không tồn tại, các lỗi hoạt động.

// Example 1
[
{ $or: [{"x.a": {$gt: 85}}, {"x.b": {$gt: 80}}] }
]
// Example 2
[
{ $and: [{"x.a": {$gt: 85}}, {"x.b": {$gt: 80}}] }
]
// Example 3
[
{ "x.a": { $gt: 85 }, "x.b": { $gt: 80 } }
]
7

Lệnh cập nhật trả về như sau:

{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }

Để xem các chỉ mục được sử dụng, bạn có thể sử dụng đường ống

// INVALID
[
{ "x.a": { $gt: 85 } },
{ "x.b": { $gt: 80 } }
]
41:

// Example 1
[
{ $or: [{"x.a": {$gt: 85}}, {"x.b": {$gt: 80}}] }
]
// Example 2
[
{ $and: [{"x.a": {$gt: 85}}, {"x.b": {$gt: 80}}] }
]
// Example 3
[
{ "x.a": { $gt: 85 }, "x.b": { $gt: 80 } }
]
9

Mẹo

Xem thêm: