Hướng dẫn field trong mongodb - field in mongodb

This entry is part 13 of 24 in the series MongoDB

  • MongoDB là gì? Các khái niệm trong MongoDB
  • Hướng dẫn cài đặt, cấu hình MongoDB trên Windows 10
  • Cài đặt và sử dụng Robo 3T (RoboMongo) trên Windows
  • Hướng dẫn cài đặt MongoDB trên Linux (Ubuntu 16.04)
  • Hướng dẫn MongoDB – Tạo database trong MongoDB
  • Hướng dẫn MongoDB – Xóa, DROP database trong MongoDB
  • Tạo bảng, collections trong MongoDB (Tạo bằng dòng lệnh, Robo3t)
  • Xóa bảng, collections trong MongoDB (Xóa bằng lệnh/ Robo3T)
  • Insert document, bản ghi trong MongoDB (Insert bằng lệnh, Robo3T)
  • Truy vấn dữ liệu/document, find(), Select, Where trong MongoDB
  • Xóa document, row trong MongoDB (bằng dòng lệnh, Robo3T)
  • Update document, dữ liệu trong MongoDB
  • Projection trong MongoDB (SELECT field/column trong MongoDB)
  • Sắp xếp trong MongoDB(orderBy, sorting() trong MongoDB)
  • Ưu nhược điểm của MongoDB, khi nào nên dùng MongoDB
  • Xóa cột, field, trường của collections trong MongoDB ($unset)
  • Kiểm tra null, check tồn tại trong MongoDB với $exists
  • Đổi tên field trong MongoDB với $rename
  • Tạo user/roles, phân quyền người dùng trên MongoDB
  • Các loại roles, vai trò, quyền trong MongoDB.
  • Đăng nhập mongodb với username và password (database mongo)
  • Tạo Replica Set trong MongoDB, Ví dụ Replica Set MongoDB
  • Replication, Replica Set trong MongoDB là gì?
  • Phân trang trong MongoDB (skip(), limit() paging trong MongoDB)

Projection trong MongoDB (SELECT field/column trong MongoDB)

Sắp xếp trong MongoDB(orderBy, sorting() trong MongoDB)

Ưu nhược điểm của MongoDB, khi nào nên dùng MongoDB

db.COLLECTION_NAME.find({condition},{field1:1,field2:0,...})

Xóa cột, field, trường của collections trong MongoDB ($unset)

  • Kiểm tra null, check tồn tại trong MongoDB với $exists
  • Đổi tên field trong MongoDB với $rename
  • Tạo user/roles, phân quyền người dùng trên MongoDB

Các loại roles, vai trò, quyền trong MongoDB.

{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25},
{'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25},
{'_id':'3', 'name':'mbappe', 'country':'france', 'age':18},
{'_id':'4', 'name':'modric', 'country':'croatia', 'age':30},
{'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},

Đăng nhập mongodb với username và password (database mongo) hiển thị name của tất cả các document thì câu lệnh sẽ là:

db.player.find({},{'name':1})

Tạo Replica Set trong MongoDB, Ví dụ Replica Set MongoDB

SELECT _id, name FROM player

Replication, Replica Set trong MongoDB là gì?

Hướng dẫn field trong mongodb - field in mongodb

Phân trang trong MongoDB (skip(), limit() paging trong MongoDB)

Mặc định, khi truy vấn trong MongoDB (

{'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25},
{'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25},
{'_id':'3', 'name':'mbappe', 'country':'france', 'age':18},
{'_id':'4', 'name':'modric', 'country':'croatia', 'age':30},
{'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},
9) kết quả trả về sẽ gồm tất cả các field trong document. Để giới hạn số lượng dữ liệu mà MongoDB gửi tới ứng dụng, bạn có thể sử dụng projection để chỉ rõ những field nào được trả về, những field nào không được trả về khi truy vấn.

Cú pháp:

db.player.find({'age':25},{'name':1, '_id':0})

Tạo Replica Set trong MongoDB, Ví dụ Replica Set MongoDB

SELECT name FROM player WHERE age = 25

Replication, Replica Set trong MongoDB là gì?

Hướng dẫn field trong mongodb - field in mongodb

Phân trang trong MongoDB (skip(), limit() paging trong MongoDB)

References:

https://docs.mongodb.com/manual/reference/operator/projection/positional/

https://docs.mongodb.com/manual/tutorial/project-fields-from-query-results/

Như trong bài viết trước mình đã giới thiệu basic nhất về mongodb với các bạn. Tiếp tục công cuộc tìm hiểu về Mongo. Chúng ta sẽ cùng nhau tìm hiểu về các query trong mongoDB (go)

1. Find, FindOne

Thay vì dùng câu SELECT như trong SQL , trong MongoDB chúng ta sẽ sử dụng phương thức find để truy vấn dữ liệu với các tham số cần truy vấn.

Cú pháp : db.collection_name.find() Khi không truyền vào tham số bên trong hàm find() thì nó sẽ lẩy ra tất cả document có bên trong của collection đó. Trong bài trước mình đã tạo 1 collection users. bây giờ mình sẽ thức hiện các thao tác truy vấn trên đó. : db.collection_name.find() Khi không truyền vào tham số bên trong hàm find() thì nó sẽ lẩy ra tất cả document có bên trong của collection đó. Trong bài trước mình đã tạo 1 collection users. bây giờ mình sẽ thức hiện các thao tác truy vấn trên đó.

db.users.find(); 

Hướng dẫn field trong mongodb - field in mongodb
kết quả về tương tự như khi chúng ta sử dùng

SELECT * FROM  users.

Nếu bạn chỉ muốn lấy ra một bản ghi duy nhất thì chúng ta sử dụng findOne. nó sẽ trả về cho chúng ta document đầu tiên.

db.player.find({},{'name':1})
7
Hướng dẫn field trong mongodb - field in mongodb

Định dạng kêt quả trả về dạng json vs pretty()

db.users.find().pretty()

Hướng dẫn field trong mongodb - field in mongodb

2. Truy vấn dạng có điều kiện

Cú pháp : db.collection_name.find(query, projection) : db.collection_name.find(query, projection)

Trong đó :

collectionname : là tên collection của bạn.

query : không bắt buộc. chỉ định những điều kiệu chúng ta muốn

projection : không bắt buộc. Chỉ định các trường để trả về trong các tài liệu khớp với query trên, nếu projection rỗng thì trả về tất cả các trường.

có dạng { field1: , field2: ... }

value có thể là bất kì sau đây

  •  1 hoặc true để trả về  trường đó
    
  • {'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25},
    {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25},
    {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18},
    {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30},
    {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},
    0
  • {'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25},
    {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25},
    {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18},
    {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30},
    {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},
    1

    Mình muốn lấy ra những user có name là thu

    {'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25},
    {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25},
    {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18},
    {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30},
    {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},
    2

    Hướng dẫn field trong mongodb - field in mongodb

    Hoặc mình chỉ muốn lấy một số tường trong collection.

    {'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25},
    {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25},
    {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18},
    {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30},
    {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},
    3

    kết quả sẽ trả về mảng các document mỗi document là một object có _id, name, email. vì _id sẽ mặc định có trong kết quả trả về, nếu bạn không muốn _id xuất hiện thì chỉ cần thếm vào projection _id : 0.

    Hướng dẫn field trong mongodb - field in mongodb

    sort()

    method sort trả về các doccument trong collection được sắp xếp tăng dần theo 1 trường của collection . sort() tương ứng với SQL.ORDER BY

    {'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25},
    {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25},
    {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18},
    {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30},
    {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},
    4

    Hướng dẫn field trong mongodb - field in mongodb

    limit()

    method limit() giới hianj số lượng document trong kết quả trả về.

    {'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25},
    {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25},
    {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18},
    {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30},
    {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},
    5

    Hướng dẫn field trong mongodb - field in mongodb

    skip()

    method skip() dùng để lấy ra số document trong kết quả từ vị trí thừ bao nhiêu và bỏ qua các document trước bị trí đó

    {'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25},
    {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25},
    {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18},
    {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30},
    {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},
    6

    Hướng dẫn field trong mongodb - field in mongodb

    Chúng ta thường sử dụng skip kết hợp với limit để phân trang từ sever trả về. ví dự như khi mình muốn phân trang lấy trang lấy ra 10 document trả về

    {'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25},
    {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25},
    {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18},
    {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30},
    {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},
    7

    *n là giới hạn số phần tử trả về page là trang hiện tại của bạn

3. Một số toán tử truy vẫn so sánh trong MongoDB

$eq trả về các document trong đó giá trị bằng với một giá trị được chỉ định trả về các document trong đó giá trị bằng với một giá trị được chỉ định

cú pháp :

db.player.find({},{'name':1})
8

$gt trả về các document trong đó giá trị của trường một giá trị được chỉ định trả về các document trong đó giá trị của trường một giá trị được chỉ định

cú pháp :

db.player.find({},{'name':1})
9

$gte trả về các document trong đó giá trị của trường lớn hơn hoặc bẳng 1 giá trị được chỉ định trả về các document trong đó giá trị của trường lớn hơn hoặc bẳng 1 giá trị được chỉ định

cú pháp :

SELECT _id, name FROM player
0

$in trả về các document trong đó giá trị nằm trong mảng được chỉ định trả về các document trong đó giá trị nằm trong mảng được chỉ định

cú pháp :

SELECT _id, name FROM player
1

$lt so sánh các giá trị nhỏ hơn giá trị được chỉ định so sánh các giá trị nhỏ hơn giá trị được chỉ định

cú pháp :

SELECT _id, name FROM player
2

$lte so sánh các giá trị nhỏ hơn một giá trị được chỉ định so sánh các giá trị nhỏ hơn một giá trị được chỉ định

cú pháp :

SELECT _id, name FROM player
3

$ne so sánh các giá trị không bằng giá trị được chỉ định so sánh các giá trị không bằng giá trị được chỉ định

cú pháp :

SELECT _id, name FROM player
4

$nin lấy ra các giá trị không có trong mảng được chỉ định cú pháp :

SELECT _id, name FROM player
5 lấy ra các giá trị không có trong mảng được chỉ định cú pháp :
SELECT _id, name FROM player
5

4. Truy vấn nhiều điều kiện trong MongoDB

MongoBD có hỗ trợ chúng ta truy vẫn nhiều diều kiện trong 1 lần khai báo với các toán tử AND, OR như trong SQL.

$and

  • thực hiện một logic AND hoạt động trên một mảng của một hoặc nhiều biểu thức và chọn ra các tài liệu đáp ứng tấy cả các biểu thức trong mảng. cú pháp :
    {'_id':'1', 'name':'neymar', 'country':'brazil', 'age':25},
    {'_id':'2', 'name':'hazard', 'country':'belgium', 'age':25},
    {'_id':'3', 'name':'mbappe', 'country':'france', 'age':18},
    {'_id':'4', 'name':'modric', 'country':'croatia', 'age':30},
    {'_id':'5', 'name':'ronaldo', 'country':'portugal', 'age':33},
    8

ex :

Hướng dẫn field trong mongodb - field in mongodb

Truy vấn này sẽ chọn tất cả document trong collections user thỏa mãn điều kiện:

các trường age có giá trị không bằng 20 và các trường price tồn tại.

Truy vấn and với nhiều expressions cùng thực hiện

Hướng dẫn field trong mongodb - field in mongodb

Truy vấn này sẽ chọn ra tất cả document trong đó:

  • các trường age có giá trị bằng 20 hoặc 21 các trường nme có giá trị băng thuthu hoặc phone_number = 12341234123*

5.Kết Luận

Qua bài viết trên hi vọng rằng các bạn có thể nắm được một số câu lệnh lấy ra dữ liệu trong Collection cơ bản rồi. Trong phần tiếp theo mình sẽ tiếp tục giới thiệu đến các aggregation, Populate ...

Nguồn tham khảo https://docs.mongodb.com/