Các công cụ sửa đổi sau đây có sẵn để cập nhật các hoạt động. Ví dụ – trong db.collection.update () và db.collection.findAndModify ().
Các bài viết liên quan:
Xác định biểu thức toán tử trong tài liệu của biểu mẫu:
{ <operator1>: { <field1>: <value1>, ... }, <operator2>: { <field2>: <value2>, ... }, }
Field Operator
- $ currentDate
Nó cập nhật các phần tử của một trường thành ngày hiện tại, dưới dạng Ngày hoặc dấu thời gian. Kiểu dữ liệu mặc định của toán tử này là ngày.
Cú pháp:
{ $currentDate: { <field1>: <typeSpecification1>, ... } }
Ví dụ:
db.books.insertOne( { _id: 1, status: "a", lastModified: purchaseDate("2013-10-02T01:11:18.965Z") } )
- $ inc
Nó làm tăng một hồ sơ theo giá trị được chỉ định.
Cú pháp:
{ $inc: { <field1>: <amount1>, <field2>: <amount2>, ... } }
Ví dụ:
{ _id: 000438, sku: "MongoDB", quantity: 1, metrics: { orders: 2, ratings: 3.5 } }
- $ min
Nó thay đổi giá trị của trường thành một giá trị được chỉ định nếu giá trị được chỉ định nhỏ hơn giá trị hiện tại của tệp.
Cú pháp:
{ $min: { <field1>: <value1>, ... } }
Ví dụ:
{ _id: 0021, highprice: 800, lowprice: 200 } db.books.update( { _id: 0021 }, { $min: { highprice: 500 } } )
- $ max
Nó thay đổi giá trị của trường thành một giá trị được chỉ định nếu giá trị được chỉ định lớn hơn giá trị hiện tại của tệp.
Cú pháp:
{$ max: {<field1>: <value1>, ...}}
Ví dụ:
{ _id: 0021, highprice: 800, lowprice: 200 } db.books.update( { _id: 0021 }, { $max: { highprice: 950 } } )
- $ mul
Nó nhân giá trị của một trường với một số.
Cú pháp:
{$ mul: {<field1>: <number1>, ...}}
Ví dụ:
db.books.update( { _id: 1 }, { $mul: { price: NumberDecimal("180.25"), qty: 2 } } )
- $ rename
Toán tử đổi tên thay đổi tên của một trường.
Cú pháp:
{$ rename: {<field1>: <newName1>, <field2>: <newName2>, ...}}
Ví dụ:
db.books.updateMany( {}, { $rename: { "nmae": "name" } } )
- $ set
Toán tử tập hợp thay đổi giá trị của một trường với giá trị được chỉ định.
Cú pháp:
{$ set: {<field1>: <value1>, ...}}
Ví dụ:
{ _id: 100, sku: "abc123", quantity: 50, instock: true, reorder: false, details: { model: "14Q2", make: "xyz" }, tags: [ "technical", "non technical" ], ratings: [ { by: "ijk", rating: 4 } ] }
- $ setOnInsert
Nếu upsert được đặt thành true, thì nó dẫn đến việc chèn một tài liệu, sau đó toán tử setOnInsert sẽ gán các giá trị được chỉ định cho trường trong tài liệu.
Cú pháp:
db.collection.update( <query>, { $setOnInsert: { <field1>: <value1>, ... } }, { upsert: true } )
- $ unset
Nó loại bỏ một trường được chỉ định.
Cú pháp:
{$ unset: {<field1>: "", ...}}
Ví dụ:
db.products.update( { sku: "unknown" }, { $unset: { quantity: "", instock: "" } }
Array Operators
- $
Chúng ta có thể cập nhật một phần tử trong một mảng mà không cần chỉ định rõ ràng vị trí của phần tử.
Cú pháp:
{"<array>. $": value}
Ví dụ:
db.collection.update( { <array>: value ... }, { <update operator>: { "<array>.$" : value } }
- $ []
Toán tử vị trí chỉ ra rằng toán tử cập nhật nên thay đổi tất cả các phần tử trong trường mảng đã cho.
Cú pháp:
{ <update operator>: { "<array>.$[]" : value } }
Ví dụ:
db.collection.updateMany( { <query conditions> }, { <update operator>: { "<array>.$[]" : value } }
- $ [<identifier>]
Nó được gọi là một toán tử vị trí được lọc để xác định các phần tử của mảng.
Cú pháp:
{ <update operator>: { "<array>.$[<identifier>]" : value } }, { arrayFilters: [ { <identifier>: <condition> } ] }
Ví dụ:
db.collection.updateMany( { <query conditions> }, { <update operator>: { "<array>.$[<identifier>]" : value } }, { arrayFilters: [ { <identifier>: <condition> } ] } )
- $ addToSet
Nó thêm một phần tử vào một mảng trừ khi phần tử đó đã có mặt, trong trường hợp đó, toán tử này không làm gì với mảng đó.
Cú pháp:
{$ addToSet: {<field1>: <value1>, ...}}
Ví dụ:
db.books.update( { _id: 1 }, { $addToSet: { tags: "MongoDB" } }
- $ pop
Chúng ta có thể xóa phần tử đầu tiên hoặc cuối cùng của mảng bằng toán tử pop. Chúng ta cần truyền giá trị của pop là -1 để loại bỏ phần tử đầu tiên của một mảng và 1 để loại bỏ phần tử cuối cùng trong một mảng.
Cú pháp:
{$ pop: {<field>: <-1 | 1>, ...}}
Ví dụ:
db.books.update( { _id: 1 }, { $pop: { mongoDB: -1 } } )
- $ pull
Sử dụng toán tử kéo, chúng ta có thể loại bỏ tất cả các trường hợp của một giá trị trong một mảng phù hợp với điều kiện đã chỉ định.
Cú pháp:
{$ pull: {<field1>: <value | condition>, <field2>: <value | condition>, ...}}
Ví dụ:
db.books.update( { }, { $pull: { Development: { $in:["Java", "RDBMS" ] }, Tech: "Cybersecurity" } }, { multi: true } )
- $ push
Nó nối một giá trị được chỉ định vào một mảng.
Cú pháp:
{$ push: {<field1>: <value1>, ...}}
Ví dụ:
db.students.update ({_id: 9}, {$ push: {Score: 91}})
- $ pullAll
Chúng tôi có thể xóa tất cả các phiên bản của thông số kỹ thuật giá trị từ một mảng hiện có bằng toán tử pullAll. Nó loại bỏ các phần tử phù hợp với giá trị được liệt kê.
Cú pháp:
{$ pullAll: {<field1>: [<value1>, <value2> ...], ...}}
Ví dụ:
db.survey.update ({_id: 1}, {$ pullAll: {Score: [0, 5]}})
Modifiers
- $ each
Nó được sử dụng với toán tử $ addToSet và toán tử $ push. Nó được sử dụng với toán tử addToSet để thêm nhiều giá trị vào một mảng nếu giá trị đó không tồn tại trong trường.
Cú pháp:
{$ addToSet: {<field>: {$ each: [<value1>, <value2> ...]}}}
Nó được sử dụng với toán tử đẩy để nối nhiều giá trị vào một mảng.
Cú pháp:
{ $push: { <field>: { $each: [ <value1>, <value2> ... ] } } }
Ví dụ:
db.students.update( { name: "Akki" }, { $push: { scores: { $each: [ 90, 92, 85 ] } } } )
- $ position
Nó chỉ định vị trí nơi toán tử đẩy chèn các phần tử bên trong một mảng.
Cú pháp:
{ $push: { <field>: { $each: [ <value1>, <value2>, ... ], $position: <num> } }
Ví dụ:
db.students.update( { _id: 1 }, { $push: { scores: { $each: [ 50, 60, 70 ], $position: 0 } } } )
- $ slice
Công cụ sửa đổi này được sử dụng để giới hạn số lượng phần tử của mảng trong hoạt động đẩy.
Cú pháp:
{ $push: { <field>: { $each: [ <value1>, <value2>, ... ], $slice: <num> } }
Ví dụ:
db.students.update( { _id: 1 }, { $push: { scores: { $each: [ 80, 78, 86 ], $slice: -5 } } } )
- $ sort
Công cụ sửa đổi sắp xếp sắp xếp các giá trị của một mảng trong hoạt động đẩy.
Cú pháp:
{ $push: { <field>: { $each: [ <value1>, <value2>, ... ], $sort: <sort specification> } }
Ví dụ:
db.students.update( { _id: 1 }, { $push: { quizzes: { $each: [ { id: 3, score: 8 }, { id: 4, score: 7 }, { id: 5, score: 6 } ], $sort: { score: 1 } } } } )
Bitwise Operator
- $ bit
Toán tử bit cập nhật một trường bằng thao tác bitwise. Nó hỗ trợ các hoạt động bitwise AND, bitwise OR, và bitwise XOR.
Cú pháp:
{ $bit: { <field>: { <and|or|xor>: <int> } } }
Ví dụ:
db.books.update( { _id: 1 }, { $bit: { expdata: { and: price(100) } } } )