Truy Vấn Dữ Liệu Trong MongoDB Bằng Command Shell.

1. Command Shell trong MongoDB.

Ở bài trước mình cũng đã giới thiệu về MongoDB, ở bài này mình sẽ hướng dẫn các bạn làm việc với MongoDB bằng Command Shell.

Sau khi cài đặt xong MongoDB, các bạn sẽ vào theo đường dẫn:
C:\Program Files\MongoDB\Server\3.4\bin\
đối với Windows 64bit và:
C:\Program Files (x86)\MongoDB\Server\3.4\bin\
đối với Windows 32bit. (3.4 là số phiên bản bạn đang dùng).

Chúng ta sẽ thấy có 2 file đó là mongod.exe và mongo.exe. Bạn sẽ chạy file mongod.exe trước để mở kết nối tới data bằng cổng port mặc định là 27017



Tiếp theo là chạy file mongo.exe để hoàn tất kết nối và đây cũng chính là nơi để chúng ta làm việc với MongoDB.


Lưu ý: bạn không được tắt mongod.exe nếu không kết nối sẽ dừng lại.

2. MongoDB - Create/Drop Database.

Một số lệnh liên quan đến Database:
>use SiinBlog
Lệnh use: khi có database tên là SiinBlog thì nó sẽ làm việc với database này, còn trong trường hợp database này không tồn tại. Nó sẽ tự động tạo mới một database tên là SiinBlog.

Ví dụ:





DB của bạn vừa mới create không có ở đây. bạn phải insert một documents hoặc tạo một collections về nó vào list.



3. MongoDB - Insert/Update/Delete/Search Database

- Insert

Cấu trúc: db.collection.insertOne/Many({document});

Như ví dụ ở trên, mình đã tạo 2 collections trong database SiinBlog, bây giờ mình sẽ thực hiện Insert dữ liệu vào collections này:

Lệnh db.Member.insertOne để insert một dữ liệu vào collections Member:
 db.Member.insertOne({username: "SiinBlog", password: "123456789", avatar: "/upload/siin.jpg"});
Lệnh db.Member.insertMany để insert nhiều dữ liệu vào collections Member:
db.Member.insertMany([{username: "SiinBlog1", password: "123456789", avatar: "/upload/siin.jpg"}, {username: "SiinBlog2", password: "123456789", avatar: "/upload/siin.jpg"}]);
Lưu ý: khi dùng insertMany thì phải có dấu [] ở đầu document để truyền vào một array.



-Update

Cấu trúc: db.collection.updateOne/Many({query}, {$set: {update}}, {options});

Tương tự như Insert. db.Member.updateOne để sửa dữ liệu trong một Object, db.Member.updateMany để sửa dữ liệu trong nhiều Object.



Lệnh db.Member.updateOne để update một dữ liệu vào Object trong collection Member:
db.Member.updateOne({username: "SiinBlog"}, {$set: {password: "siinblog"}}, {});
Lệnh db.Member.updateMany để insert nhiều dữ liệu vào Object trong collectionMember:
db.Member.updateMany({password: "123456789"}, {$set: {avatar: "siin.jpg"}}, {});

-Delete

 Cấu trúc: db.collection.deleteOne/Many({query});

db.Register.deleteOne để xóa một Object, db.Register.deleteMany để xóa nhiều Object.


Lệnh db.Register.deleteOne để xóa một Object trong collection Register có chứa memberID = 4:
db.Register.deleteteOne({memberID: 4});
Lệnh db.Register.deleteMany để xóa nhiều Object trong collection Register có chứa username là TuanSiin:

db.Register.deleteMany({username: "TuanSiin"});

-Truy vấn dữ liệu (Search)

1. Truy vấn vô điều kiện.

  Cấu trúc: db.collection.find();


Để lấy tất cả dữ liệu ở trong collection chúng ta sử dụng phương thức find() với cú pháp:
db.collectionName.find()
Tuy nhiên, khi chỉ sử dụng mỗi phương thức find thì dữ liệu trả về sẽ dưới dạng object nhưng không theo một cấu trúc nào cả.

Ở bên trên mình đã lấy tất cả dữ liệu của collections Member:
db.Member.find()
Dựa vào chức năng của hàm find() thì chúng ta có thể so sánh nó tương đương như câu lệnh Select * from trong SQL.

Và nếu như bạn muốn dữ liệu được trả về được hiển thị theo cấu trúc đã được định sẵn thì chỉ cần thêm hàm pretty() vào phía sau hàm find().

Cú pháp:
db.collectionName.find().pretty()
 Ở bên trên mình đã lấy tất cả dữ liệu của collections Register:
db.Register.find().pretty()

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

Để truy vấn có điều kiện trong MongoDB thì bạn cũng sử dụng cú pháp tương tự như phần 1, nhưng lúc này chúng ta sẽ chèn thêm điều kiện vào trong hàm find() với cú pháp sau: 
db.collection.find(condition)
Trong đó:
  • collection là tên của collection mà các bạn muốn truy vấn.
  • condition là object chứa mệnh đề điều kiện. Theo các cú pháp sau đây:
Phép ToánCú PhápVí dụCâu lệnh tương ứng trong SQL
Bằng (Equality){key: value}db.Register.find({username: "TuanSiin" }).pretty().. WHERE username = "TuanSiin"
Nhỏ hơn (Less Than ){key: {$lt: value}}db.Register.find({age: { $lt: 18}).pretty()... WHERE age < 18
Nhỏ hơn bằng (Less Than Equals){key: {$lte: value}}db.Register.find({age: { $lte: 18}).pretty()... WHERE age <= 18
Lơn hơn (Greater Than){key: {$gt: value}}db.Register.find({age: { $gt: 12}).pretty()... WHERE age > 12
Lớn hơn bằng (Greater Than Equals){key: {$gte: value}}db.Register.find({age: { $gte: 12}).pretty()... WHERE age >= 12
Khác (Not Equals){key: {$ne: value}}db.Register.find({age: { $ne: 12}).pretty()... WHERE age != 12
Trong ( In){key: {$in: [value1, value2,..]}}db.Register.find({age: { $in: [12, 18]}).pretty()... WHERE age IN (12, 18)
Không Thuộc (Not In){key: {$nin: [value1, value2,..]}}db.Register.find({age: { $nin: [12, 18]}).pretty()... WHERE age NOT IN (12, 18)
VD: in ra tất cả các member có tên là Ngo Van Tuan có trong colletion Register.
db.Register.find({fullName: "Ngo Van Tuan"}).pretty() 

3. Truy vấn nhiều điều kiện.

Trong MongoDB cũng có hỗ trợ chúng ta truy vấn nhiều điều kiện trên một lần khai báo, với các toán tử AND, OR Như trong SQL. 
AND
-Để thực hiện phép toán này thì các bạn chỉ cần thêm các điều kiện cảu câu truy vấn vào trong object chứa điều kiện bind vào trong phương thức find.
VD: Lấy ra member có tên Ngô Văn Tuấn và có Status là 1 trong collection Register.
db.Register.find({fullName: "Ngo Van Tuan", Status: 1}).pretty()


 Tương tự, nếu như bạn muốn and bao nhiêu điều kiện thì thêm bấy nhiêu vào trong object.

OR

Để sử dụng mệnh đề or (hoặc) trong MongoDB thì chúng ta cần phải truyền một key scope có tên là $or vào làm key chứa mảng các điều kiện hoặc, theo cú pháp:
db.collection.find({$or : [{key1: value1},{key2: value2},...,{keyn: valuen}]}).pretty()
VD: Lấy ra tất cả các member có Status bằng 1 hoặc username là SiinBlog1 trong collection Member.
db.Member.find({$or : [{Status: 1}, {username: "SiinBlog1"}]}).pretty()


Kết hợp cả AND và OR.

Để kết hợp giữa AND OR thì bạn chỉ cần làm tương tự như cách thực hiện truy vấn AND, và nếu truy vấn nào là or thì object đó lại làm tương tự như truy vấn OR.
VD: Lấy ra tất cả các admin có Status bằng 1 hoặc password bằng 123456789 và có username là SiinBlog1 trong collection Member.

db.Member.find({$or : [{Status: 1}, {password: "123456789"},], username: "SiinBlog1"}).pretty()


4. Chọn lọc các trường cần lấy ra.

Để chọn lọc các trường cần hiển thị ra trong 1 collection thì các bạn sử dụng phương thức find() với cú pháp sau:
db.collection.find(objectwhere,objectselect)
Trong đó:
  • objectwhere là object chứa các điều kiện ở các phần trên. Nếu bạn không muốn lọc theo điều kiện thì bạn để một object rỗng vào.
  • objectselect là obejct chứa các trường dữ liệu cần lấy ra. Mặc định thì nó sẽ lấy cả _id, nên nếu như bạn không muốn hiển thị _id thì bạn cần thêm _id: 0 vào object.
VD: Lấy ra trường _id, username, Status của tất cả các document có trong collection Member.
db.Member.find({},{username: "SiinBlog1", Status: 1}).pretty()


Lời kết:

Thấy hay thì xin để lại 1 comment nhé!

Blogger (Blogspot) được hiểu là một hệ thống phát hành weblog, được thành lập bởi Pyra Labs vào tháng 8/1999 và sau đó được mua lại bởi Google vào tháng 2/2003, Vào tháng 12/2006, Blogger trở thành chính thức sau một thời gian ngắn thử nghiệm.

2 Bình Luận