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

WebP là gì? Hướng dẫn cách để chuyển hình ảnh jpg, png qua webp

WebP là gì? WebP là một định dạng ảnh hiện đại, được phát triển bởi Google

Điểm khác biệt giữa IPv4 và IPv6 là gì?

IPv4 và IPv6 là hai phiên bản của hệ thống địa chỉ Giao thức Internet (IP). IP l

Check nameservers của tên miền xem website trỏ đúng chưa

Tìm hiểu cách check nameservers của tên miền để xác định tên miền đó đang dùn

Mình đang dùng Google Domains để check tên miền hàng ngày

Từ khi thông báo dịch vụ Google Domains bỏ mác Beta, mình mới để ý và bắt đầ