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

Cấu hình Prisma v7 Với Nest.js Mới nhất

Setup Prisma v7 trong Nest.js Bài viết dành cho ai mới học Nest.js và chọn prisma làm OR

Tấn Công Ứng Dụng Web: Mối Đe Dọa Hàng Đầu – Phần 2

viết lại nội dung này ” Phát hiện các cuộc tấn công Cross Site Scripting (XSS)

AI Chatbot 2025: Xu Hướng Tất Yếu Cho Doanh Nghiệp Dẫn Đầu

Giới thiệu AI chatbots đã trải qua một hành trình đáng kể, từ những công cụ t

Tấn Công Ứng Dụng Web: Mối Đe Dọa Hàng Đầu – Phần 1

Tấn công web là gì? Ứng dụng web là các ứng dụng cung cấp dịch vụ cho người