Truy vấn và xắp sếp các tài liệu
Bây giờ rằng chúng ta đã điền một vài tài liệu, chúng ta có thể truy vấn chúng bằng cách truy cập các trường
khác nhau từ object. Chúng ta cũng có thể xắp sếp danh sách các tài liệu trả về MongoDB. Đi theo các bước này:
1. Trước khi chúng ta bắt đầu truy vấn, hãy điền 2 tài liệu nhiều hơn vào users collection của chúng ta:
> db.users.insertMany([
{ username: ‘jane’, fullName: ‘Jane Doe’, age: 32 },
{ username: ‘john’, fullName: ‘John Doe’, age: 30 }])
2. Bây giờ chúng ta có thể bắt đầu truy vấn cho một username nhất định bằng cách sử dụng findOne và truyền một
object với trường username. Khi sử dụng findOne, MongoDB sẽ trả về object khớp trước tiên:
> db.users.findOne({ username: ‘jane’ })
3. Chúng ta cũng có thể truy vấn cho các tên đầy đủ, hay bất cứ trường nào khác trong các tài liệu từ collection.
Khi sử dụng find, MongoDB sẽ trả về một mảng tất cả các khớp:
> db.users.find({ fullName: ‘Daniel Bugl’ })
4. Một thứ quan trọng để theo dõi ra cho là rằng khi truy vấn ObjectId, chúng ta cần gói ID string với một
ObjectId() constructor, như sau:
> db.users.findOne({ _id: ObjectId(‘6405f062b0d06adeaeefc3bc’)
})
Đảm bảo thay đổi string truyền tới the ObjectId() constructor thành một the ObjectId có hiệu lực trả về từ các
lệnh trước.
5. MongoDB cũng cung cấp các toán tử truy vấn nhất định, gắn tiền tố $. Ví dụ, chúng ta có thể thấy mọi người
trên tuổi 30 trong collection của chúng ta bằng cách sử dụng toán tử $gt, như sau:
> db.users.find({ age: { $gt: 30 } })
Bạn sẽ nhận thấy rằng John Doe không được trả về, vì age của anh ta chính xác là 30. Nếu chúng ta muốn khớp
các tuổi lớn hơn hoặc bằng 30, chúng ta cần sử dụng toán tử $gte.
6. Nếu chúng ta muốn xắp sếp các kết quả của chúng ta, chúng ta có thể sử dụng phương thức .sort() sau
.find(). Ví dụ, chúng ta có thể trả về tất cả các vật từ users collection xắp sếp tăng theo tuổi (1 cho tăng,
-1 cho giảm):
> db.users.find().sort({ age: 1 })