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

Sự Khác Nhau Giữa Domain và Hosting Là Gì?

Sự khác nhau giữa domain và hosting là gì? Bài này giải thích ngắn và dễ hiểu nh

Shared Hosting hay VPS Hosting: Lựa chọn nào dành cho bạn?

Bài viết giải thích rõ shared hosting và vps hosting là gì và hướng dẫn chọn lựa

Thay đổi Package Name của Android Studio dể dàng với plugin APR

Nếu bạn đang gặp khó khăn hoặc bế tắc trong việc thay đổi package name trong And

Lỗi không Update Meta_Value Khi thay thế hình ảnh cũ bằng hình ảnh mới trong WordPress

Mã dưới đây hoạt động tốt có 1 lỗi không update được postmeta ” meta_key=