hocvietcode.com
  • Trang chủ
  • Học lập trình
    • Lập trình C/C++
    • Cấu trúc dữ liệu và giải thuật
    • Lập trình HTML
    • Lập trình Javascript
      • Javascript cơ bản
      • ReactJS framework
      • AngularJS framework
      • Typescript cơ bản
      • Angular
    • Lập trình Mobile
      • Lập Trình Dart Cơ Bản
        • Dart Flutter Framework
    • Cơ sở dữ liệu
      • MySQL – MariaDB
      • Micrsoft SQL Server
      • Extensible Markup Language (XML)
      • JSON
      • MongoDB
    • Lập trình PHP
      • Lập trình PHP cơ bản
      • Laravel Framework
    • Lập trình Java
      • Java Cơ bản
    • Lập trình C#
      • Lập Trình C# Cơ Bản
      • ASP.NET Core MVC
    • Machine Learning
    • Git và Github
  • WORDPRESS
    • WordPress cơ bản
    • WordPress nâng cao
    • Chia sẻ WordPress
  • Kiến thức hệ thống
    • Microsoft Azure
    • Docker
    • Linux
  • Chia sẻ IT
    • Tin học văn phòng
      • Microsoft Word
      • Microsoft Excel
    • Marketing
      • Google Adwords
      • Facebook Ads
      • Kiến thức khác
    • Chia sẻ phần mềm
    • Review công nghệ
    • Công cụ – tiện ích
      • Kiểm tra bàn phím online
      • Kiểm tra webcam online
Đăng nhập
  • Đăng nhập / Đăng ký

Please enter key search to display results.

Home
  • MongoDB
Các toán tử trong MongoDB

Các toán tử trong MongoDB

  • 03-03-2026
  • Toanngo92
  • 0 Comments

Trong bài viết này này, chúng ta sẽ:

  • Mô tả các loại toán tử trong MongoDB
  • Giải thích cách sử dụng toán tử truy vấn (query operators) và toán tử chiếu (projection operators)
  • Giải thích cách chỉnh sửa dữ liệu của field và mảng bằng các toán tử cập nhật (update operators)

MongoDB cung cấp nhiều loại toán tử khác nhau cho phép người dùng tương tác hiệu quả với cơ sở dữ liệu.

Buổi học này mô tả các loại toán tử trong MongoDB và cách sử dụng chúng nói chung.
Ngoài ra, buổi học còn trình bày chi tiết chức năng của các toán tử phổ biến nhất kèm theo các ví dụ thực tế.


Mục lục

  • Giới thiệu về các toán tử trong MongoDB
    • Toán tử truy vấn
    • Toán tử so sánh
      • $eq Operator
      • $lt Operator
      • $in Operator
    • Toán tử logic
      • $and Operator
      • $or Operator
      • $nor Operator
      • $not Operator
        • Cú pháp:
        • Ví dụ:
    • Toán tử phần tử
      • $exists Operator
        • Cú pháp:
  • Ví dụ minh họa
      • Truy vấn sử dụng $exists
      • $type Operator
        • Cú pháp:
        • Bảng 3.2: Kiểu dữ liệu và số tương ứng
  • Ví dụ 1: zipCode kiểu string
  • Ví dụ 2: zipCode kiểu integer
    • Array Operators
    • $all Operator
    • Cú pháp:
    • Ví dụ:
      • $elemMatch Operator
    • Cú pháp:
    • Ví dụ:
    • $size Operator
    • Cú pháp:
    • Ví dụ:
  • Projection Operators
        • Bốn toán tử projection trong MongoDB:
      • $ Operator (Projection)
    • Cú pháp:
  • Ví dụ
      • Truy vấn sử dụng $ projection operator
      • $slice Operator (Projection)
    • Cú pháp:
    • Ví dụ:
    • Update Operators
      • Field Update Operators
      • $currentDate Operator
        • Cú pháp:
    • Ví dụ:
      • $inc Operator
        • Cú pháp:
        • Ví dụ:
      • $set Operator
        • Cú pháp:
        • Ví dụ:
      • $rename Operator
        • Cú pháp:
        • Ví dụ:
  • Array Update Operators
    • $pop Operator
        • Cú pháp:
      • Ví dụ với $pop Operator
    • $pull Operator
    • Cú pháp:
  • Ví dụ
    • $push Operator
    • Cú pháp:
  • Ví dụ
  • Các toán tử khác
    • $comment Operator
    • Cú pháp:
        • Ví dụ
      • $rand Operator
        • Cú pháp:
        • Ví dụ
    • Giải thích kết quả:
    • $natural Operator
        • Cú pháp:
        • Ví dụ

Giới thiệu về các toán tử trong MongoDB

Toán tử (operator) là các từ khóa hoặc ký hiệu được sử dụng để hướng dẫn trình biên dịch hoặc trình thông dịch thực hiện các phép toán toán học hoặc logic cụ thể trên tập dữ liệu theo yêu cầu.

Một số loại toán tử trong MongoDB bao gồm:

  • Toán tử truy vấn (Query operators)
  • Toán tử chiếu (Projection operators)
  • Toán tử cập nhật (Update operators)
  • Toán tử khác (Miscellaneous operators)

Toán tử truy vấn

Toán tử truy vấn được sử dụng để truy xuất dữ liệu từ cơ sở dữ liệu.
Các loại toán tử truy vấn bao gồm:

  • Comparison operators (Toán tử so sánh)
  • Logical operators (Toán tử logic)
  • Element operators (Toán tử phần tử)
  • Array operators (Toán tử mảng)

Toán tử so sánh

Toán tử so sánh dùng để so sánh giá trị của một field với một giá trị được chỉ định và trả về các document có giá trị khớp với điều kiện đó.

Bảng 3.1 mô tả các toán tử so sánh trong MongoDB.

OperatorDescription
$eqDùng để truy xuất, cập nhật hoặc xóa các document mà giá trị của field bằng với giá trị được chỉ định
$gtDùng để truy xuất, cập nhật hoặc xóa các document mà giá trị của field lớn hơn giá trị được chỉ định
$gteDùng để truy xuất, cập nhật hoặc xóa các document mà giá trị của field lớn hơn hoặc bằng giá trị được chỉ định
$inDùng để truy xuất, cập nhật hoặc xóa các document mà giá trị của field nằm trong một mảng giá trị được chỉ định
$ltDùng để truy xuất, cập nhật hoặc xóa các document mà giá trị của field nhỏ hơn giá trị được chỉ định
$lteDùng để truy xuất, cập nhật hoặc xóa các document mà giá trị của field nhỏ hơn hoặc bằng giá trị được chỉ định
$neDùng để truy xuất, cập nhật hoặc xóa các document mà giá trị của field khác với giá trị được chỉ định
$ninDùng để truy xuất, cập nhật hoặc xóa các document mà giá trị của field không nằm trong bất kỳ giá trị nào của mảng được chỉ định

$eq Operator

Toán tử này kiểm tra xem giá trị của một field có bằng với giá trị được chỉ định hay không.

Cú pháp:

{ <field>: { $eq: <value> } }

Ví dụ:

Hình 3.1 hiển thị các document được lưu trong collection accounts thuộc database mẫu có tên sample_analytics.

Nếu người dùng muốn xem các tài khoản (accounts) có giá trị limit bằng 9000, người dùng có thể thực thi truy vấn sử dụng toán tử $eq như sau:

db.accounts.find({limit:{$eq:9000}})

Hình 3.2 hiển thị kết quả của truy vấn này.


$lt Operator

Toán tử này kiểm tra xem giá trị của một field có nhỏ hơn giá trị được chỉ định hay không.

Cú pháp:

{ <field>: { $lt: <value> } }

Ví dụ:

Trong collection accounts, nếu người dùng muốn xem các document có giá trị limit nhỏ hơn 5000, truy vấn sẽ là:

db.accounts.find({limit:{$lt:5000}})

Hình 3.3 hiển thị kết quả của truy vấn này.


$in Operator

Toán tử này kiểm tra xem giá trị của một field có khớp với bất kỳ giá trị nào trong mảng được chỉ định hay không.

Cú pháp:

{ field: { $in: [<value1>, <value2>, ..., <valueN>] } }

Ví dụ:

Nếu người dùng muốn xem các document trong collection accounts mà sản phẩm (product) là ‘Commodity’ hoặc ‘InvestmentStock’, truy vấn sẽ là:

db.accounts.find({products:{$in:['Commodity','InvestmentStock']}})

Hình 3.4 hiển thị kết quả của truy vấn này.


Toán tử logic

Toán tử logic đánh giá nhiều biểu thức và trả về một giá trị Boolean (true hoặc false).

Bốn toán tử logic bao gồm:

  • $and
  • $or
  • $nor
  • $not

$and Operator

Toán tử này thực hiện phép toán logic AND.
Nó chỉ liệt kê các document thỏa mãn tất cả các biểu thức được chỉ định.

Cú pháp:

{ $and: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] }

Ví dụ:

Nếu người dùng muốn xem các document trong collection accounts mà:

  • limit ≥ 5000
  • và limit < 7000

Truy vấn sẽ là:

db.accounts.find({$and:[{limit:{$gte:5000}}, {limit:{$lt:7000}}]})

Hình 3.5 hiển thị kết quả của truy vấn này.


$or Operator

Toán tử $or thực hiện phép toán logic OR.
Nó liệt kê các document thỏa mãn ít nhất một trong các biểu thức được chỉ định.

Cú pháp:

{ $or: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] }

Ví dụ:

Nếu người dùng muốn xem tất cả các document mà:

  • limit ≤ 5000
  • hoặc limit = 7000

Truy vấn sẽ là:

db.accounts.find({$or:[{limit:{$lte:5000}}, {limit:{$eq:7000}}]})

Hình 3.6 hiển thị kết quả của truy vấn này.


$nor Operator

Toán tử này thực hiện phép toán logic NOR.
Nó liệt kê các document không thỏa mãn bất kỳ biểu thức nào trong mảng biểu thức được chỉ định.

Cú pháp:

{ $nor: [ { <expression1> }, { <expression2> }, ... , { <expressionN> } ] }

Ví dụ:

Nếu người dùng muốn xem các document mà limit không bằng 9000 và không bằng 10000, truy vấn sẽ là:

db.accounts.find({$nor:[{limit:9000},{limit:10000}]})

Hình 3.7 hiển thị kết quả của truy vấn này.

Dưới đây là bản dịch chi tiết, đầy đủ, không rút gọn và không bỏ sót nội dung phần tiếp theo từ các trang anh vừa gửi (tiếp tục Session 3 – MongoDB Operators).


$not Operator

Toán tử này thực hiện phép toán logic NOT.
Nó liệt kê các document không khớp với biểu thức được chỉ định.

Cú pháp:
{ field: { $not: { <operator-expression> } } }
Ví dụ:

Giả sử trong collection accounts, người dùng muốn xem tất cả các document mà giá trị limit không lớn hơn hoặc bằng 5000.

Người dùng có thể thực thi truy vấn sử dụng toán tử $not như sau:

db.accounts.find({ limit: { $not: { $gte: 5000 } } })

Hình 3.8 hiển thị kết quả của truy vấn này.


Toán tử phần tử

Toán tử phần tử được sử dụng để kiểm tra:

  • Một field cụ thể có tồn tại trong document hay không
  • Hoặc một field có kiểu dữ liệu xác định hay không

Các toán tử này được sử dụng với hai giá trị: true hoặc false.

  • Nếu dùng với giá trị true, truy vấn sẽ trả về tất cả document có chứa field được chỉ định hoặc field có kiểu dữ liệu được chỉ định.
  • Nếu dùng với giá trị false, truy vấn sẽ trả về các document không chứa field đó hoặc không có field với kiểu dữ liệu được chỉ định.

MongoDB hỗ trợ hai toán tử phần tử:

  • $exists
  • $type

$exists Operator

Toán tử $exists kiểm tra xem field được chỉ định có tồn tại trong document hay không.

  • Nếu dùng với true, $exists trả về các document có chứa field được chỉ định (kể cả khi giá trị của field là null).
  • Nếu dùng với false, $exists trả về các document không chứa field đó.
Cú pháp:
{ field: { $exists: <boolean> } }

Trong đó <boolean> có hai giá trị: true hoặc false.


Ví dụ minh họa

Trước khi hiểu cách hoạt động của toán tử này, hãy tạo:

  • Database: Product_detail
  • Collection: product_delivery

Sau đó chèn 5 document vào collection product_delivery:

db.product_delivery.insertMany([
 { _id:1, address:"2130 Messy Way", zipCode:"90698345",
   delivered:["Documents","Food","electronics","Books"],
   Feedback:[{product:"xyz",score:6},{product:"abc",score:7}] },

 { _id:2, address:"156 Lunar way garden",
   delivered:["Food","electronics"],
   Feedback:[{product:"xyz",score:5},{product:"abc",score:4}] },

 { _id:3, address:"456 Penny way Palace", zipCode:3921412,
   delivered:["electronics"],
   Feedback:[{product:"xyz",score:8},{product:"abc",score:9}] },

 { _id:4, address:"155 Solar Ring road",
   delivered:["Books"],
   Feedback:[{product:"xyz",score:5},{product:"abc",score:2}] },

 { _id:5, address:"134 Julie Garden",
   zipCode:["834847278","1893289032"],
   delivered:["Food","electronics"],
   Feedback:[{product:"xyz",score:4},{product:"abc",score:8}] }
])

Hình 3.9 mô phỏng kết quả

Truy vấn sử dụng $exists

Giả sử người dùng muốn xem các document không có zipCode.

db.product_delivery.find({ "zipCode": { $exists:false } })
Hình 3.10 hiển thị kết quả của truy vấn này.

$type Operator

Toán tử này trả về các document mà kiểu dữ liệu của field được chỉ định khớp với kiểu dữ liệu được yêu cầu.

Toán tử $type rất hữu ích khi xử lý dữ liệu không có cấu trúc rõ ràng hoặc collection phức tạp.

Cú pháp:
{ field: { $type: <BSON type> } }

Toán tử $type chấp nhận:

  • Tên alias
  • Hoặc số đại diện cho kiểu dữ liệu

Bảng 3.2: Kiểu dữ liệu và số tương ứng
DatatypeNumberAlias
Double1“double”
String2“string”
Object3“object”
Array4“array”
Binary data5“binData”
ObjectId7“objectId”
Boolean8“bool”
Date9“date”
Null10“null”
Regular11“regex”
JavaScript13“javascript”
32-bit integer16“int”
Timestamp17“timestamp”
64-bit integer18“long”
Decimal12819“decimal”
Min key-1“minKey”
Max key127“maxKey”

Ví dụ 1: zipCode kiểu string

db.product_delivery.find({ "zipCode": { $type: 2 } })
Hình 3.11 hiển thị kết quả.

Ví dụ 2: zipCode kiểu integer

db.product_delivery.find({ "zipCode": { $type: 16 } })
Hình 3.12 hiển thị kết quả.

Array Operators

Toán tử mảng được sử dụng khi người dùng muốn lọc dữ liệu dựa trên điều kiện của field dạng mảng.

Có ba toán tử mảng:

  • $all
  • $elemMatch
  • $size

$all Operator

Cú pháp:

{ <field>: { $all: [<value1>, <value2>, ...] } }

Ví dụ:

Xem các document có cả “Food” và “electronics” trong field delivered:

db.product_delivery.find({ delivered: { $all:["Food","electronics"] } })
Hình 3.13 hiển thị kết quả.

$elemMatch Operator

Cú pháp:

{ <field>: { $elemMatch: { <query1>, <query2>, ... } } }

Ví dụ:

Xem document có Feedback chứa:

  • product = “xyz”
  • score ≥ 8
db.product_delivery.find({
   Feedback: {
      $elemMatch: { product:"xyz", score:{ $gte:8 } }
   }
})
Hình 3.14 hiển thị kết quả.

$size Operator

Cú pháp:

{ <field>: { $size: n } }

Ví dụ:

Xem document có mảng delivered chứa 4 phần tử:

db.product_delivery.find({ delivered: { $size:4 } })
Hình 3.15 hiển thị kết quả.

Projection Operators

Hàm find() trong MongoDB trả về tất cả dữ liệu thỏa điều kiện.

Nhưng nếu người dùng chỉ muốn xem một số field cụ thể, thì cần sử dụng projection operators.

Projection operators cho phép chỉ định các field hoặc phần tử được hiển thị trong kết quả truy vấn dựa trên điều kiện.


Bốn toán tử projection trong MongoDB:
OperatorChức năng
$Trả về phần tử đầu tiên trong mảng thỏa điều kiện truy vấn
$elemMatchTrả về phần tử đầu tiên trong mảng thỏa điều kiện của $elemMatch
$metaTruy xuất metadata liên quan đến document
$sliceChỉ định số phần tử mảng được trả về

$ Operator (Projection)

Cú pháp:

db.collection.find(
   { <array>: <condition> },
   { "<array>.$": 1 }
)

Ví dụ

Tạo database Student_detail và chuyển sang database đó:

use Student_detail

Hình 3.16 hiển thị việc chuyển database.

Tạo collection Studentmarks và chèn dữ liệu:

db.Studentmarks.insertMany([
 { name:"Robert", age:16, sub:1, marks:[89,78,90] },
 ...
])

Sau khi chèn thêm các document:

{ name: "Oliver", age: 17, sub:1, marks:[78,85,89] },
{ name: "Henry", age: 15, sub:1, marks:[88,89,76] },
{ name: "David", age: 16, sub:2, marks:[86,84,66] }
Hình 3.17 hiển thị kết quả của truy vấn insertMany.

Truy vấn sử dụng $ projection operator

Giả sử người dùng muốn:

  • Xem phần tử đầu tiên ≥ 85 trong mảng marks
  • Với điều kiện sub = 1
  • Chỉ hiển thị name
  • Ẩn _id

Truy vấn:

db.Studentmarks.find(
   { sub:1, marks:{ $gte:85 } },
   { _id:0, name:1, "marks.$":1 }
)

Giải thích:

  • "marks.$":1 → chỉ hiển thị phần tử đầu tiên của mảng thỏa điều kiện
  • _id:0 → ẩn cột _id
Hình 3.18 hiển thị kết quả.

$slice Operator (Projection)

Cú pháp:

db.collection.find(<query>,
   { <arrayField>: { $slice: <number> } })

Ví dụ:

Xem 2 phần tử đầu tiên của mảng marks với name = "Robert":

db.Studentmarks.find(
   { "name":"Robert" },
   { "marks": { $slice:2 } }
)
Hình 3.19 hiển thị kết quả.

Update Operators

(Toán tử cập nhật)

Update operators giúp người dùng chỉnh sửa document trong collection.

Có hai nhóm:

  • Field update operators
  • Array update operators

Field Update Operators

MongoDB có 9 toán tử cập nhật field:

OperatorChức năng
$currentDateGán ngày hiện tại
$incTăng giá trị theo số chỉ định
$minCập nhật nếu giá trị mới nhỏ hơn
$maxCập nhật nếu giá trị mới lớn hơn
$mulNhân với giá trị chỉ định
$renameĐổi tên field
$setGán giá trị
$unsetXóa field
$setOnInsertChỉ set khi insert

$currentDate Operator

Cú pháp:
{ $currentDate: { <field>: <typeSpecification>, ... } }

<typeSpecification> có thể:

  • true → lưu kiểu Date
  • “timestamp”
  • “date”

Lưu ý: phải viết chữ thường.

Nếu field không tồn tại, MongoDB sẽ tự tạo.


Ví dụ:

Cập nhật Exam_Date của "David" thành ngày hiện tại:

db.Studentmarks.updateOne(
   { "name":"David" },
   { $currentDate:{ Exam_Date:true } }
)
Hình 3.20 hiển thị kết quả.

Xem lại:

db.Studentmarks.find()
Hình 3.21 hiển thị collection sau cập nhật.

$inc Operator

Cú pháp:
{ $inc: { <field1>: <amount1>, ... } }
Ví dụ:

Tăng age của "Henry" thêm 2:

db.Studentmarks.updateOne(
   { name:"Henry" },
   { $inc:{ age:2 } }
)
Hình 3.22 hiển thị kết quả.

Xem lại:

db.Studentmarks.find({ "name":"Henry" })
Hình 3.23 hiển thị document đã cập nhật.

$set Operator

Cú pháp:
{ $set: { <field>: <value>, ... } }
Ví dụ:

Thêm field credit vào tất cả document:

db.Studentmarks.updateMany(
   {},
   { $set:{ credit:0 } }
)
Hình 3.24 hiển thị kết quả.

Xem lại:

db.Studentmarks.find()
Hình 3.25 hiển thị document đã cập nhật.

$rename Operator

Cú pháp:
{ $rename: { <oldField>: <newField>, ... } }

Lưu ý: tên mới phải khác tên cũ.

Ví dụ:

Đổi credit thành unit:

db.Studentmarks.updateOne(
   { name:"David" },
   { $rename:{ "credit":"unit" } }
)
Hình 3.26 hiển thị kết quả.

Xem lại:

db.Studentmarks.find({ "name":"David" })
Hình 3.27 hiển thị document đã cập nhật.

Array Update Operators

Các toán tử cập nhật mảng gồm:

OperatorChức năng
$Cập nhật phần tử đầu tiên thỏa điều kiện
$[]Cập nhật tất cả phần tử
$addToSetThêm phần tử nếu chưa tồn tại
$popXóa phần tử đầu hoặc cuối
$pullXóa phần tử thỏa điều kiện
$pushThêm phần tử
$pullAllXóa tất cả phần tử khớp giá trị

$pop Operator

Cú pháp:
{ $pop: { <field>: -1 | 1 } }
  • -1 → xóa phần tử đầu
  • 1 → xóa phần tử cuối

Ví dụ với $pop Operator

Giả sử trong collection Studentmarks, người dùng muốn xóa phần tử đầu tiên trong mảng marks của document có name = "Oliver".

Truy vấn:

db.Studentmarks.updateOne(
   { "name": "Oliver" },
   { $pop: { marks: -1 } }
)
  • Giá trị -1 → xóa phần tử đầu tiên
  • Giá trị 1 → xóa phần tử cuối cùng
Hình 3.28 hiển thị kết quả.

Xem lại document:

db.Studentmarks.find({ "name": "Oliver" })
Hình 3.29 hiển thị document sau khi cập nhật.

$pull Operator

Cú pháp:

{ $pull: { <field>: <value | condition>, ... } }

Toán tử $pull dùng để xóa phần tử trong mảng nếu phần tử đó thỏa điều kiện.


Ví dụ

Xóa phần tử có giá trị 85 trong mảng marks của "Oliver":

db.Studentmarks.updateOne(
   { name: "Oliver" },
   { $pull: { marks: { $in: [85] } } }
)
Hình 3.30 hiển thị kết quả.

Xem lại document:

db.Studentmarks.find({ "name": "Oliver" })
Hình 3.31 hiển thị document sau cập nhật.

$push Operator

Cú pháp:

{ $push: { <field>: <value>, ... } }

Dùng để thêm phần tử vào mảng.


Ví dụ

Thêm giá trị 99 vào mảng marks của "Oliver":

db.Studentmarks.updateOne(
   { "name": "Oliver" },
   { $push: { marks: 99 } }
)
Hình 3.32 hiển thị kết quả.

Xem lại:

db.Studentmarks.find({ "name": "Oliver" })
Hình 3.33 hiển thị document sau cập nhật.

Các toán tử khác

Ba toán tử khác thường dùng trong MongoDB:

OperatorChức năng
$commentThêm chú thích cho truy vấn
$randSinh số ngẫu nhiên từ 0 đến 1
$naturalXác định thứ tự duyệt document

$comment Operator

Cú pháp:

db.collection.find(
   { <query> },
   { $comment: <comment> }
)

Ví dụ

Thêm comment cho truy vấn tìm "Robert":

db.Studentmarks.find(
   { "name": "Robert" },
   { $comment: "Displaying Robert mark details" }
)
Hình 3.34 hiển thị kết quả.

Lưu ý:

Comment không hiển thị trong kết quả vì nó được lưu trong collection system.profile nếu profiling được bật.
Có thể xem bằng:

db.system.profile.find()

$rand Operator

Cú pháp:
{ $rand: {} }

Toán tử này tạo số ngẫu nhiên từ 0 đến 1.


Ví dụ

Cập nhật field unit bằng số ngẫu nhiên:

  • Nhân với 100
  • Làm tròn lên (ceil)
db.Studentmarks.updateMany(
   {},
   [{
      $set: {
         unit: {
            $ceil: { $multiply: [ { $rand: {} }, 100 ] }
         }
      }
   }]
)
  • Bộ lọc {} → áp dụng cho tất cả document
Hình 3.35 hiển thị kết quả.

Xem lại:

db.Studentmarks.find()
Hình 3.36 hiển thị kết quả.

Giải thích kết quả:

  • Field unit được cập nhật bằng số ngẫu nhiên cho tất cả document.
  • Document "David" đã có field unit (đổi từ credit bằng $rename), nên giá trị được cập nhật.
  • Các document khác được tạo mới field unit.

$natural Operator

Toán tử $natural dùng để xác định thứ tự duyệt document:

  • 1 → thứ tự tự nhiên
  • -1 → thứ tự ngược
Cú pháp:
db.collection.find().sort({ $natural: 1 })

Hoặc:

db.collection.find().sort({ $natural: -1 })

Ví dụ

Duyệt document theo thứ tự tự nhiên:

db.Studentmarks.find().sort({ $natural: 1 })

Duyệt document theo thứ tự ngược:

db.Studentmarks.find().sort({ $natural: -1 })

Bài tập

 

Thực hành (Try It Yourself)

  1. Tạo một cơ sở dữ liệu (database) có tên Student và một collection có tên Stud_mark.

  2. Chèn bốn document sau vào collection Stud_mark:

[
  {
    name: "Adam",
    gender: "M",
    subjects: ["Java", "C", "Python"],
    marks: [89, 78, 90],
    average: 85.6
  },
  {
    name: "Franklin",
    gender: "M",
    subjects: ["C", "VB", "Python"],
    marks: [78, 85, 89],
    average: 84
  },
  {
    name: "Michael",
    gender: "M",
    subjects: ["Java", "PHP"],
    marks: [88, 89],
    average: 88.5
  },
  {
    name: "Amelia",
    gender: "F",
    subjects: ["Ruby", "C++"],
    marks: [86, 87],
    average: 86.5
  }
]

Sử dụng collection stud_mark, thực hiện các yêu cầu sau:

  1. Tìm các document có giá trị average bằng 84.

  2. Tìm các document có giá trị average lớn hơn 85.

  3. Hiển thị các document mà mảng subjects chứa Java hoặc C++.

  4. Xem các document có average lớn hơn hoặc bằng 87 và nhỏ hơn hoặc bằng 90.

  5. Xem tất cả các document mà mảng subjects có chứa giá trị "Java".

 

Bài viết liên quan:

Làm việc với cơ sở dữ liệu MongoDB
Giới thiệu mongoDB
Hướng dẫn cài đặt MongoDB trên môi trường windows, linux, macOS
Giới thiệu tổng quan và các khái niệm cơ bản về MongoDB

THÊM BÌNH LUẬN Cancel reply

Dịch vụ thiết kế Wesbite

NỘI DUNG MỚI CẬP NHẬT

Các toán tử trong MongoDB

Làm việc với cơ sở dữ liệu MongoDB

Giới thiệu chi tiết kiến trúc ASP.NET MVC và Core MVC

Khởi tạo dự án Hello World với ADO.NET và Entity Framework

Hướng dẫn tùy chỉnh phpmyadmin fix lỗi export Database 30MB Cyberpanel

Giới thiệu

hocvietcode.com là website chia sẻ và cập nhật tin tức công nghệ, chia sẻ kiến thức, kỹ năng. Chúng tôi rất cảm ơn và mong muốn nhận được nhiều phản hồi để có thể phục vụ quý bạn đọc tốt hơn !

Liên hệ quảng cáo: [email protected]

Kết nối với HỌC VIẾT CODE

© hocvietcode.com - Tech888 Co .Ltd since 2019

Đăng nhập

Trở thành một phần của cộng đồng của chúng tôi!
Registration complete. Please check your email.
Đăng nhập bằng google
Đăng kýBạn quên mật khẩu?

Create an account

Welcome! Register for an account
The user name or email address is not correct.
Registration confirmation will be emailed to you.
Log in Lost your password?

Reset password

Recover your password
Password reset email has been sent.
The email could not be sent. Possible reason: your host may have disabled the mail function.
A password will be e-mailed to you.
Log in Register
×