- vừa được xem lúc

Mongo DB cho người mới bắt đầu ! (P2)

0 0 169

Người đăng: Viet Anh

Theo Viblo Asia

Lời nói đầu

Gần đây, mình mới bắt đầu nghiên cứu và sử dụng mongo db nên có chút kiến thức cơ bản về Mongo muốn share và note ra đây coi như để nhở (Biết đâu sẽ có ích cho ai đó). Những kiến thức ít ỏi này không toàn diện nhưng mình nghĩ là những điều cơ bản và cần thiết để có thể sử dụng cơ bản được mongodb . Vì đây chỉ là những kiến thức ít ỏi của bản thân nên nếu có gì sai mong các bạn gọp ý giúp mình. Let go !!!

Mongo DB cho người mới bắt đầu ! (P1)

Mongo DB cho người mới bắt đầu ! (P2)

Nội dung

Trong bài viết trước mình đã giới thiệu những điều cơ bản về Mongo, cách cài đặt , setup và sử dụng MongoDB một cách cơ bản nhất. Tiếp theo sau đây mình sẽ giới thiệu kĩ hơn về các query trong Mongo. Nào bắt đầu nhé .

Ok, đầu tiên chúng ta sẽ tạo các dữ liệu mẫu cho bài viết đề các bạn có thể có 1 cái nhìn cụ thể hơn về các query của chúng ta. OK, bạn hay vào mongo và chạy command sau để tạo db mẫu nhé :

db.inventory.insertMany([ { item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" }, { item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" }, { item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" }, { item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" }, { item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);

Select All Record

Hơi nhắc lại xíu nhưng thôi thừa hơn thiếu, để lấy được toàn bộ các document trong 1 collection thì bạn đơn giản chỉ cần sử dụng phương thức find với không có đối số truyền vào . Cụ thể như sau :

db.inventory.find( {} )

Query bên trên tương đương với câu query sau bên Sql:

SELECT * FROM inventory

Specify Equality Condition

Để query một điều kiện = cụ thể , chỉ cần sử dụng cụm <field>:<value> trong object của phương thức find.

Chúng ta sẽ đi vào ví dụ cụ thể nhé , giờ mình cần lấy tất cả các bản ghi có statusD. Câu query cụ thể dư sau :

db.inventory.find( { status: "D" } )

Tương tự với câu SQL query sau :

SELECT * FROM inventory WHERE status = "D"

Specify Conditions Using Query Operators

Bạn cũng có thể địn nghĩa các điều kiên bằng các biểu thức điều kiện với các toán tử so sanh cụ thể như sau :

Biểu thức Mô tả
$eq Phép so sánh bằng
$gt Phép so sanh lớn hơn
$gte Phép so sanh lớn hơn hoặc bằng
$in Phép so sánh với 1 trong các phần tử của mảng
$lt Phép so sánh nhỏ hơn
$lte Phép so sánh nhỏ hơn hoặc bằng
$ne Phép so sánh khác (Nhận các giá trị không bằng)
$nin Phép so sánh khắc với tất cả các phần tử của mảng

Biểu thức điều kiện này có dạng như sau :

{ <field1>: { <operator1>: <value1> }, ... }

Ví dụ : Chúng ta sẽ lấy tất cả các document mà có statusA hoặc D. Câu query đại khái sẽ như sau :

db.inventory.find( { status: { $in: [ "A", "D" ] } } )

Tương tự với câu SQL query sau :

SELECT * FROM inventory WHERE status in ("A", "D")

Thực tế với bài toán bên trên thì chúng ta cũng có thể sử dụng toán tử logic $or tuy nhiên nếu query trên cùng một field , sẽ tốt hơn nếu dùng toán tử $in

Specify AND Conditions

Thông thường mà nói chúng ta rất ít khi cần truy vấn dữ liệu mà chỉ cần truy vấn qua một field trong một document. Ít nhất thì cũng phải một vài field và khi đó chúng ta sẽ cần sử dụng đến toán tử logic AND trong câu truy vấn để select dữ liệu

Ví dụ cụ thể: Chúng ta cần select dữ liệu có status là A và thêm một điều kiện nữa là có qty nhỏ hơn 30. Truy vấn đại khái sẽ như sau :

db.inventory.find( { status: "A", qty: { $lt: 30 } } )

Tương tự với câu SQL query sau :

SELECT * FROM inventory WHERE status = "A" AND qty < 30

Specify OR Conditions

Với toán tử logic OR chúng ta sẽ có thể lọc ra các bản ghi đung với một trong các điều kiện mà chúng ta đưa ra .

Ví dụ cụ thể : Cần lấy các bản ghi có status là A hoặc qty nhỏ hơn 30. Câu query sẽ như sau :

db.inventory.find( { $or: [ { status: "A" }, { qty: { $lt: 30 } } ] } )

Tương tự với câu SQL query sau :

SELECT * FROM inventory WHERE status = "A" OR qty < 30

Các toán tử logic

Biểu thức Mô tả
$and Các bản ghi hợp lệ là các bản ghi đúng với tất cả điều kiện
$not Các bản ghi hợp lệ là các bản ghi không đúng 1 trong các điều kiện
$nor Các bản ghi hợp lệ là các bản ghi không đúng với tất cả điều kiện
$or Các bản ghi hợp lệ là các bản ghi đúng với một trong các điều kiện

Specify AND as well as OR Conditions

Nhiều khi độ phức tạp của các truy vấn nó sẽ bao gồm nhiều điều kiện là sự kết hợp của các toán tử logic . Trong ví dụ sau mình trình bày ta sẽ nói về sự kết hợp giữa AND vs OR

Ví dụ : Lấy các bản ghi mà status là A và qty nhỏ hơn 30 hoặc item bắt đầu bằng chữ p. Query cụ thể như sau :

db.inventory.find( { status: "A", $or: [ { qty: { $lt: 30 } }, { item: /^p/ } ]
} )

Tương tự với câu SQL query sau :

SELECT * FROM inventory WHERE status = "A" AND ( qty < 30 OR item LIKE "p%")

Kết luận

Đến đây, bài viết sơ sài của mình đã kết thúc. Nếu các bạn cảm thấy nó bổ ích thì upvote 1 cái giúp mình nhé . Ở bài viết sau mình sẽ đề cập đến nhiều query phức tạp hơn nữa của select dữ liệu. Cám ơn các bạn đã đọc đến hết bài viết . Thank you !

Tài liệu tham khảo.

https://docs.mongodb.com/

Bình luận

Bài viết tương tự

- vừa được xem lúc

TÌM HIỂU VỀ MONGODB

. 1. Định nghĩa về MongoDB. . MongoDB là một cơ sở dữ liệu mã nguồn mở và là cơ sở dữ liệu NoSQL(*) hàng đầu, được hàng triệu người sử dụng.

0 0 31

- vừa được xem lúc

Mongo DB cho người mới bắt đầu !

Lời nói đầu. Gần đây, mình mới bắt đầu nghiên cứu và sử dụng mongo db nên có chút kiến thức cơ bản về Mongo muốn share và note ra đây coi như để nhở (Biết đâu sẽ có ích cho ai đó).

0 0 23

- vừa được xem lúc

Áp dụng kiến trúc 3 Layer Architecture vào project NodeJS

The problem encountered. Các framework nodejs phổ biết như Express cho phép chúng ta dễ dàng tạo ra Resful API xử lí các request từ phía client một cách nhanh chóng và linh hoạt.

0 0 64

- vừa được xem lúc

Xây dựng CRUD RESTful API sử dụng Node, Express, MongoDB.

Introduction. Trong phạm vi bài viết này chúng ta sẽ cùng tìm hiểu về cách tạo restful api với Node, Express và MongoDB. . Xử lý các hoạt động crud.

0 0 213

- vừa được xem lúc

MongoDB là gì? Cơ sở dữ liệu phi quan hệ

Bài viết này mình sẽ giúp các bạn có cái nhìn tổng quan về MongoDB. Chúng ta không lạ gì với cơ sở dữ liệu quan hệ, còn với cơ sở dữ liệu phi quan hệ thì sao? MEAN stack (MongoDB, Express, AngularJS,

0 0 38

- vừa được xem lúc

CRUD với NodeJs, Express và MongoDB

1. Cài đặt môi trường. . B1: Tạo một thư mục dự án.

0 0 61