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

7 Cách Tăng Tốc Ứng Dụng React Hiệu Quả Mà Bạn Có Thể Làm Ngay

React là một thư viện JavaScript phổ biến trong việc xây dựng giao diện người d

Trung Quốc “thả quân bài tẩy”: hàng loạt robot hình người!

MỘT CUỘC CÁCH MẠNG ROBOT ĐANG HÌNH THÀNH Ở TRUNG QUỐC Thượng Hải, ngày 13/5 –

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