Tips - Query array trong mongodb

Nội dung bài viết

Video học lập trình mỗi ngày

Mongodb là gì? Query array trong mongodb? Thì trong bài này, tôi sẽ giới thiệu một số kỹ thuật truy vấn khi document có chứa một số field được lưu trữ có dạng array. ở đây có rất nhiều cách trình bày, nhưng nó luôn được tối ưu nhất, giúp cho devjs sử dụng mongodb truy vấn một cách nhanh nhất.

Bài viết này ví dụ về các hoạt động truy vấn trên các trường mảng bằng cách sử dụng collection.find() và MongoDB Node.js Driver. Trước tiên, chúng ta thử insert data để truy vấn

Giả sử bạn đã  Install Mongodb 

Insert mongodb

await db.collection('inventory').insertMany([
  {
    item: 'journal',
    qty: 25,
    tags: ['blank', 'red'],
    dim_cm: [14, 21]
  },
  {
    item: 'notebook',
    qty: 50,
    tags: ['red', 'blank'],
    dim_cm: [14, 21]
  },
  {
    item: 'paper',
    qty: 100,
    tags: ['red', 'blank', 'plain'],
    dim_cm: [14, 21]
  },
  {
    item: 'planner',
    qty: 75,
    tags: ['blank', 'red'],
    dim_cm: [22.85, 30]
  },
  {
    item: 'postcard',
    qty: 45,
    tags: ['blue'],
    dim_cm: [10, 15.25]
  }
]);

Tips:  Find mongoose - sử dụng async await thay thế cho callback 

Match an Array mongodb


Ví dụ 1: Hãy tìm tất cả documents có field tags chứa chính xác "red" and "blank";

const cursor = db.collection('inventory').find({
  tags: ['red', 'blank']
});

Kết quả:

Query array trong mongodb


Ví dụ 2: Hãy tìm tất cả documents có field tags chứa một trong hai "red" and "blank";

db.inventory.find( { tags: { $all: ["red", "blank"] } } )

Kết quả

Query array trong mongodb


Tips:  Database integration with node.js 


Ví dụ 3 Hãy tìm tất cả documents có field tags chứa "red";

db.inventory.find( { tags: "red" } )

Kết quả:

Query array trong mongodb


Ví dụ 4: Hãy tìm tất cả documents có field dim_cm lớn hơn 25

db.inventory.find( { dim_cm: { $gt: 25 } } )

Kết quả:

Query array trong mongodb


Ví dụ 5: Hãy tìm tất cả documents trong đó phần tử thứ hai trong field dim_cm lớn hơn 25:

db.inventory.find( { "dim_cm.1": { $gt: 25 } } )

Kết quả:

Query array trong mongodb


Ví dụ 6: Sử dụng toán tử $size để truy vấn các mảng theo số phần tử. Ví dụ, sau đây chọn các tài liệu trong đó tags array lớn hơn 3 items

db.inventory.find( { "tags": { $size: 3 } } )

Kết quả:

Query array trong mongodb


Resource: https://docs.mongodb.com/manual/tutorial/query-arrays/#query-an-array-by-array-length

Có thể bạn đã bị missing