/ / MongoDB / Comment (0)

Học mongoDB – các câu lệnh select dữ liệu trong mongoDB

Trong bài trước thì mình đã giới thiệu cho các bạn các cách tạo và sửa Collections trong MongoDB, và bài này chúng ta sẽ đi tìm hiểu những câu lệnh truy vấn select dữ liệu theo các điều kiện, sắp xếp order by dữ liệu, limit dữ liệu và tìm kiếm kiểu like kèm theo đó là các câu lệnh Sql tương ứng mà ta hay sử dụng.

Các câu lệnh select dữ liệu trong mongoDB

– ví dụ tôi có 1 collection có tên users và sau đây tôi sẽ thực hiện các câu lệnh truy vấn select dữ liệu như sau.

Lấy dữ liệu không theo điều kiện

– Để lấy tất cả danh sách documents trong collection users ta sử dụng câu lệnh:

db.users.find()

và câu lệnh này tương ứng với câu lệnh SQL:

SELECT * FROM users

– Chỉ lấy id, user_idstatus ta sử dụng câu lệnh:

db.users.find(
    { },
    { user_id: 1, status: 1 }
)

Mặc định câu lệnh trên nó sẽ lấy cả keys id và câu lệnh này tương ứng với câu lệnh SQL:

SELECT id,
       user_id,
       status
FROM users

– Hoặc chúng ta không muốn lấy key id chỉ lấy ra user_idstatus ta sử dụng câu lệnh:

db.users.find(
    { },
    { user_id: 1, status: 1, _id: 0 }
)

Câu lệnh trên ta sẽ gắn thêm _id: 0 để không lấy ra id và câu lệnh này tương ứng với câu lệnh SQL:

SELECT user_id, status
FROM users

Lấy dữ liệu theo điều kiện

– Lấy tất cả documents có status = 1:

db.users.find(
    { status: "1" }
)

Và câu lệnh SQL tương ứng là:

SELECT *
FROM users
WHERE status = "1"

– Lấy tất cả documents có status != 1:

db.users.find(
    { status: { $ne: "1" } }
)

Điều kiện != ta sử dụng biến $ne Và câu lệnh SQL tương ứng là:

SELECT *
FROM users
WHERE status != "1"

– Lấy các documents theo nhiều điều kiện:

db.users.find(
    { status: "A",
      age: 50 }
)

Và câu lệnh SQL tương ứng là:

SELECT *
FROM users
WHERE status = "A"
AND age = 50

– Lấy các dư liệu theo where và or where:

db.users.find(
    { $or: [ { status: "A" } ,
             { age: 50 } ] }
)

Để sử dụng or where ta sử dụng khóa $or,và câu lệnh SQL tương ứng là:

SELECT *
FROM users
WHERE status = "A"
OR age = 50

– Lấy dữ liệu theo điều kiện lớn hơn:

db.users.find(
    { age: { $gt: 25 } }
)

Để sử dụng kiểm tra điều kiện lớn hơn ta sử dụng khóa $gt,và câu lệnh SQL tương ứng là:

SELECT *
FROM users
WHERE age > 25

– Lấy dữ liệu theo điều kiện nhỏ hơn:

db.users.find(
   { age: { $lt: 25 } }
)

Để sử dụng kiểm tra điều kiện nhỏ hơn ta sử dụng khóa $lt,và câu lệnh SQL tương ứng là:

SELECT *
FROM users
WHERE age < 25

– Lấy dữ liệu theo điều kiện vừa lớn hơn và nhỏ hơn:

db.users.find(
   { age: { $gt: 25, $lte: 50 } }
)

Để sử dụng kiểm tra điều kiện nhỏ hơn ta sử dụng khóa $lt và điều kiện lớn hơn ta dùng khóa $gt,và câu lệnh SQL tương ứng là:

SELECT *
FROM users
WHERE age > 25
AND   age <= 50

– Lấy dữ liệu theo điều kiện Like:

db.users.find( { user_id: /bc/ } )

Hoặc

db.users.find( { user_id: { $regex: /bc/ } } )

Và câu lệnh SQL tương ứng là:

SELECT *
FROM users
WHERE user_id like "%bc%"

– Lấy dữ liệu theo điều kiện Like, từ khóa tìm kiếm ở đầu chuỗi:

db.users.find( { user_id: /^bc/ } )

Hoặc

db.users.find( { user_id: { $regex: /^bc/ } } )

Và câu lệnh SQL tương ứng là:

SELECT *
FROM users
WHERE user_id like "bc%"

Lấy dữ liệu sắp xếp theo order by

– Lấy dữ liệu và sắp xếp từ nhỏ tới lớn, từ A – Z:

db.users.find( { status: "A" } ).sort( { user_id: 1 } )

Để sử dụng ta dùng lệnh sort và giá trị cho key cần tìm là 1.Và câu lệnh SQL tương ứng là:

SELECT *
FROM users
WHERE status = "A"
ORDER BY user_id ASC

– Lấy dữ liệu và sắp xếp từ lớn tới nhỏ, từ Z – A:

db.users.find( { status: "A" } ).sort( { user_id: -1 } )

Để sử dụng ta dùng lệnh sort và giá trị cho key cần tìm là -1. Và câu lệnh SQL tương ứng là:

SELECT *
FROM users
WHERE status = "A"
ORDER BY user_id DESC

Đếm dữ liệu với lệnh count

– Đếm toàn bộ dữ liệu:

db.users.count()

Hoặc

db.users.find().count()

Và câu lệnh SQL tương ứng là:

SELECT COUNT(*)
FROM users

– Đếm toàn dữ liệu key user_id và key đó tồn tại:

db.users.count( { user_id: { $exists: true } } )

Hoặc

db.users.find( { user_id: { $exists: true } } ).count()

Và câu lệnh SQL tương ứng là:

SELECT COUNT(user_id)
FROM users

– Đếm toàn bộ dữ liệu với điều kiện lớn hơn:

db.users.count( { age: { $gt: 30 } } 

Hoặc

db.users.find( { age: { $gt: 30 } } ).count()

Và câu lệnh SQL tương ứng là:

SELECT COUNT(*)
FROM users
WHERE age > 30

Lấy dữ liệu không trùng lặp với từ khóa DISTINCT

– Để lấy các dữ liệu không trùng lặp ta sử dụng hàm distinct:

db.users.distinct( "status" )

và câu lệnh SQL tương ứng là:

SELECT DISTINCT(status)
FROM users

Lấy dữ liệu theo số lượng limit

– Lấy 1 dữ liệu duy nhất với hàm limit:

db.users.findOne()

Hoặc

db.users.find().limit(1)

Và câu lệnh SQL tương ứng là:

SELECT *
FROM users
LIMIT 1

– Lấy dữ liệu từ vị trí bao nhiêu và lấy bao nhiêu phần tử:

db.users.find().limit(5).skip(10)

Và câu lệnh SQL tương ứng là:

SELECT *
FROM users
LIMIT 5
SKIP 10


08/03/2017
Tags:
Written by nobitacnt

Trong bài viết không tránh khỏi những câu từ chưa chính xác,mong nhận được sự góp ý để website hoàn thiện hơn.Nếu thấy bài viết có ích với bạn hãy like và share để ủng hộ nhé :D.

Bài viết chùng chuyên mục

Gửi bình luận

Giới thiệu

Mình tạo ra blog này với mong muốn chia sẻ và học hỏi kinh nghiệm trong quá trình thiết kế website. Website đang trong quá trình phát triển chân thành cảm ơn mọi sự góp ý của các bạn để làm cho website ngày càng hoàn thiên.

DMCA.com Protection Status
Theo dõi qua Email

Tổng hợp các bài viết về

Hoc php - CodeIgniter Framework - Laravel Framework - PHP va MYSQL