Uncategorized

MongoDB: Giới hạn kết quả truy vấn

MongoDB: Giới hạn kết quả truy vấn

| |

Trả về kết quả với số lượng dữ liệu mà chúng ta mong muốn với phương thức limit()

Trong MongoDB, phương thức limit() xác định số document lớn nhất có thể trả về.

Thêm limit() vào sau truy vấn khi sử dụng db.collection.find() để xác định giới hạn số lượng document.

Ví dụ

Đầu tiên, chúng ta sẽ thực hiện truy vấn mà không sử dụng limit() 

Không có limit()

db.cast.find( { movies: { $exists: false } } )

Kết quả:

{ "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "name" : "Brad Pitt" }
{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "name" : "Chris Evans" }
{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014b"), "name" : "Margot Robbie" }
{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014c"), "name" : "Leonardo DiCaprio" }
{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014d"), "name" : "Jack Black" }

Có Limit()

db.cast.find( { movies: { $exists: false } } ).limit(4)

Kết quả:

{ "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "name" : "Brad Pitt" }
{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "name" : "Chris Evans" }
{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014b"), "name" : "Margot Robbie" }
{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014c"), "name" : "Leonardo DiCaprio" }
Trong câu truy vấn trên có sử dụng toán tử $exists để kiểm tra sự tồn tại của một trường (fields) nào đó. $exists có giá trị là kiểu Boolean. Ở ví dụ trên, chúng ta đặt giá trị cho nó là false, đồng nghĩ với việc loại bỏ những document mà có tồn tại trường movies.

Ngược lại. Nếu sử dụng {$exists: true} thì kết quả trả về chỉ bao gồm những document nào chứa trường movies.

Phương thức skip()

Có thể sử dụng phương thức skip(<number of documents>) để loại bỏ những document ở phía trước. Nói cách khác, chúng ta có thể kiểm soát được vị trí mà MongoDB bắt đầu trả về kết quả. ví dụ:

db.cast.find( { movies: { $exists: false } } ).limit(4).skip(1)

Kết quả:

{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "name" : "Chris Evans" }
{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014b"), "name" : "Margot Robbie" }
{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014c"), "name" : "Leonardo DiCaprio" }

Có thể thấy ngay, kết quả đầu tiên đã bị loại bỏ (.skip(1))

Loại bỏ nhiều hơn 1 document:

db.cast.find( { movies: { $exists: false } } ).limit(4).skip(3)

3 kết quả đầu tiên sẽ bị loại bỏ:

{ "_id" : ObjectId("5781c9ac48ef8c6b3ffb014c"), "name" : "Leonardo DiCaprio" }

 

 

    Previous

    MongoDB: Truy vấn với trường chỉ định

    MongoDB: Sắp xếp kết quả truy vấn

    Next

    Leave a Comment

    Subscribe

    A lead capture sample form