Mongo đại cương P2

1. Query data db.<collection_name>.find(query) db.<collection_name>.findOne(query) collection_name: tên của collection find: trả về tất cả dữ liệu findOne: trả về dữ liệu đầu tiên query: là một object mô tả bên dưới /*==============================*/find({})// tìm tất cả{key: value}// So sánh bằng{age:69}// tìm với tuổi bằng 69{key:{$ne: value}}// So sánh không bằng{age:{$ne:69}}// tìm với tuổi khác 69{key:{$gt: value}}//

1. Query data

db.<collection_name>.find(query)
db.<collection_name>.findOne(query)

collection_name: tên của collection
find: trả về tất cả dữ liệu
findOne: trả về dữ liệu đầu tiên
query: là một object mô tả bên dưới

/*==============================*/find({})// tìm tất cả{key: value}// So sánh bằng{age:69}// tìm với tuổi bằng 69{key:{$ne: value}}// So sánh không bằng{age:{$ne:69}}// tìm với tuổi khác 69{key:{$gt: value}}// Nhỏ hơn{age:{$gt:69}}// tìm với tuổi nhỏ hơn 69{key:{$gte: value}}// Nhỏ hơn bằng{age:{$gte:69}}// tìm với tuổi nhỏ hơn bằng 69{key:{$lt: value}}// Lớn hơn{age:{$lt:69}}// tìm với tuổi lớn hơn 69{key:{$lte: value}}// Lớn hơn bằng{age:{$lte:69}}// tìm với tuổi lớn hơn bằng 69{key:{$in: value}}// Nằm trong những giá trị này{age:{$in:[36,49,50]}}// tìm với tuổi bằng 36-49-50{key:{$nin: value}}// Không nằm trong những giá trị này{age:{$nin:[36,49,50]}}// tìm với tuổi khác 36-49-50{key: value}// Áp dụng được với regex{email:/.gmail$/}// tìm với email kết thúc bằng .gmail{ip_address:/^1/}// tìm với ip bắt đầu bằng 1

2. Multi-field query

Điều kiện AND

db.<collection_name>.find({ key1: value1, key2: value2 })// tìm với điều kiện giới tính là 'Male' và tuổi lớn hơn 69{gender:'Male', age:{$lt:69}}

Điều kiện OR

db.<collection_name>.find({ 
  $or:[{ key1: value1 },{ key2: value2 }]})// tìm với điều kiện giới tính là 'Male' hoặc tuổi lớn hơn 69{
  $or:[{ gender:'Male'},{ age:{$lt:69}}]}

3. Nested object

Cách tìm khi value dạng object

// document trong mongoDB{...
  profile:{
    city:'Hanoi',
    work:'2B Company'}}// tìm với điều kiện profile city là Hanoi
db.<collection_name>.find({ profile.city:'Hanoi'})

4. Array field

Cách tìm khi value dạng array

// document trong mongoDB{...
  languages:['English','Japanese','Vietnamese']}// tìm với điều kiện languages là English
db.<collection_name>.find({ languages:'English'})
// document trong mongoDB{...
  languages:['English','Japanese','Vietnamese']}// tìm với điều kiện languages có chứa 2 giá trị
db.<collection_name>.find({ languages:{ $size:2}})

5. Array of embedded documents

Cách tìm khi value dạng array các object

// document trong mongoDB{...
  pets:[{type:'cat', name:'Linnea'},{type:'dog', name:'Tom'},{type:'cat', name:'Kylie'}]}// tìm với điều kiện pets type là cat
db.<collection_name>.find({ 
  pets.type:'cat'})// Hoặc
db.<collection_name>.find({ 
  pets:{
    $elementMatch:{ type:'cat'}}})

6. Query empty field

Cách tìm khi document không có field

// data{first_name:'ken', last_name:'trung'}{first_name:'thu', last_name:'thuy', age:18}// tìm với điều kiện có field age
db.<collection_name>.find({ age:null})// Hoặc
db.<collection_name>.find({ age:{ $exists:false}})

7. $where

Giá trị nhận vào của $where là string

db.<collection_name>.find({ $where:'javascript expression'})// Ví dụ
db.<collection_name>.find({ first_name:'ken'})
db.<collection_name>.find({ $where:'this.first_name === "ken"'})
db.<collection_name>.find({ $where:'this.first_name === this.last_name'})

8. Pagination

// trả về số lượng, không trả về dữ liệu
db.<collection_name>.count(query)// bỏ qua X phần tử và chỉ lấy Y phần tử
db.<collection_name>.find(query).skip(x).limit(y)

9. Sort

db.<collection_name>.find(query).sort({ field:-1})1: ascending order(tăng dần)-1: descending order(giảm dần)

10. CRUD

db.<collection_name>.save()
db.<collection_name>.insert(data)
db.<collection_name>.insertMany(datas)
db.<collection_name>.find(query)
db.<collection_name>.findOne(query)
db.<collection_name>.updateOne(query, data)
db.<collection_name>.updateMany(query, data)
db.<collection_name>.delete(query)
db.<collection_name>.deleteOne(query)
// insert-document.js
db.users.insert({
  first_name:'ken',
  last_name:'trung'})load('script/insert-document.js')
var user ={}
user.first_name ='ken'
user.last_name ='trung'
db.<collection_name>.save(user)// Tìm document có _id là gì, sau đó update trường first_name
db.<collection_name>.updateOne({ _id:...},{ $set:{first_name:'ken'}})// Tìm document có _id là gì, sau đó update language nằm trong settings// Trường settings là array và ta chỉ muốn update 1 trường trong đó
db.<collection_name>.updateOne({ _id:...},{ $set:{settings.languages:'vn'}})

11. Atomic operator

// $inc: tăng - giảm số lượng// $push: thêm 1 data vào mảng// $pull: xóa 1 data ra khỏi mảng// $addToSet: nếu chưa có thì thêm, có rồi thì chỉ update

db.<collection_name>.updateOne({_id:...},{$inc:{viewCount +1}})

Nguồn: viblo.asia

Bài viết liên quan

9 Mẹo lập trình Web “ẩn mình” giúp tiết kiệm hàng giờ đồng hồ

Hầu hết các lập trình viên (kể cả những người giỏi) đều tốn thời gian x

Can GPT-4o Generate Images? All You Need to Know about GPT-4o-image

OpenAI‘s GPT-4o, introduced on March 25, 2025, has revolutionized the way we create visual con

Khi nào nên dùng main, section, article, header, footer, và aside trong HTML5

HTML5 đã giới thiệu các thẻ ngữ nghĩa giúp cấu trúc nội dung web một cách có

So sánh Webhook và API: Khi nào nên sử dụng?

Trong lĩnh vực công nghệ thông tin và phát triển phần mềm, Webhook và API là hai th