Rate this post

MongoDB là một cơ sở dữ liệu NoSQL hàng đầu, được biết đến với khả năng lưu trữ dữ liệu dưới dạng tài liệu, cung cấp một phương thức linh hoạt và mạnh mẽ để quản lý dữ liệu phi cấu trúc hoặc bán cấu trúc. Điều này làm cho MongoDB trở thành lựa chọn ưu tiên cho nhiều ứng dụng web, dịch vụ đám mây và ứng dụng di động, nơi cần đến sự linh hoạt cao và khả năng mở rộng dễ dàng. Trong môi trường dữ liệu ngày càng đa dạng và phức tạp hiện nay, MongoDB thể hiện tầm quan trọng của mình qua khả năng quản lý lượng lớn dữ liệu, đồng thời cung cấp các công cụ truy vấn mạnh mẽ và hiệu suất cao.

Các toán tử cập nhật (update operators) trong MongoDB đóng một vai trò thiết yếu trong việc sửa đổi và quản lý dữ liệu. Chúng bao gồm một loạt các lệnh cho phép người dùng thực hiện các thao tác cập nhật đa dạng, từ việc thay đổi giá trị của các trường, thêm hoặc xóa các trường, đến việc thao tác với mảng và cấu trúc dữ liệu phức tạp khác. Toán tử cập nhật không chỉ giúp tối ưu hóa việc quản lý dữ liệu bằng cách cung cấp cách thức sửa đổi dữ liệu mà không cần viết lại toàn bộ tài liệu, mà còn hỗ trợ đảm bảo tính toàn vẹn và độ chính xác của dữ liệu. Nhờ có các toán tử cập nhật, MongoDB mang đến cho người dùng khả năng linh hoạt và hiệu quả cao trong việc cập nhật dữ liệu, điều thiết yếu cho việc phát triển ứng dụng nhanh chóng và hiệu quả trong thế giới số ngày nay.

Các Loại Toán Tử Cập Nhật

Trong MongoDB, các toán tử cập nhật được thiết kế để đáp ứng nhu cầu đa dạng của việc sửa đổi dữ liệu, và chúng được phân loại dựa trên chức năng và cách thức hoạt động.

Toán tử Field như $set$unset là những công cụ cơ bản cho việc thêm mới hoặc xóa bỏ các trường trong tài liệu; $set được sử dụng để thiết lập giá trị cho một trường, trong khi $unset loại bỏ trường ra khỏi tài liệu.

Toán tử Array bao gồm $push, $pop, $pull, và $addToSet, mỗi toán tử phục vụ một mục đích riêng biệt trong việc quản lý các phần tử của mảng. $push thêm một phần tử vào cuối mảng, $pop loại bỏ phần tử ở đầu hoặc cuối mảng, $pull xóa tất cả các phần tử trong mảng phù hợp với điều kiện xác định, và $addToSet thêm một phần tử vào mảng nếu phần tử đó chưa tồn tại.

Toán tử Bitwise như $bit được dùng để thực hiện các thao tác bit trên giá trị của trường, cho phép sửa đổi dữ liệu ở cấp độ bit, hữu ích trong các tình huống cần xử lý thấp.

Ngoài ra, có một loạt các toán tử khác như $rename, dùng để đổi tên trường, $inc để tăng giá trị của trường theo một lượng xác định, và $mul để nhân giá trị của trường. Mỗi toán tử này đều mang lại các khả năng sửa đổi dữ liệu mạnh mẽ và linh hoạt, giúp MongoDB trở thành một lựa chọn ưu việt cho việc lưu trữ và quản lý dữ liệu NoSQL.

Toán tử Field

  1. $ 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") }  
)  
  1. $ 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  
  }  
}  
  1. $ 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 } } )  
  1. $ 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 } } )  
  1. $ 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 } }  
)  
  1. $ 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" } } )  
  1. $ 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 } ]  
}
  1. $ 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 }  
)  
  1. $ 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: "" } }  

Toán tử Array

  1. $

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 } } 
  1. $ []

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 } }  
  1. $ [<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> } ] } )  
  1. $ 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" } }  
  1. $ 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 } } )  
  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 }  
)
  1. $ 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}})
  1. $ 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]}})

Toán tử Modifiers

  1. $ 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 ] } } } )  
  1. $ 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  
        }  
     }  
   }  
)  
  1. $ 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  
       }  
     }  
   }  
)  
  1. $ 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 }  
       }  
     }  
   }  
)  

Toán tử Bitwise

  1. $ 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) } } }  
)  

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now