Giới hạn bỏ qua tổng hợp MongoDB

Hàm tạo tổng hợp được sử dụng để xây dựng đường ống tổng hợp. Không khởi tạo trực tiếp lớp này, hãy sử dụng Model. tổng hợp() thay vì

Ví dụ

const aggregate = Model.aggregate([
  { $project: { a: 1, b: 1 } },
  { $skip: 5 }
]);

Model.
  aggregate([{ $match: { age: { $gte: 21 }}}]).
  unwind('tags').
  exec(callback);

Ghi chú

  • Các tài liệu được trả về là các đối tượng javascript đơn giản, không phải tài liệu cầy mangut (vì bất kỳ hình dạng tài liệu nào cũng có thể được trả về)

  • Mongoose không cast giai đoạn đường ống. Dưới đây sẽ không hoạt động trừ khi

    await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
    
    4 là một chuỗi trong cơ sở dữ liệu

    tổng hợp mới([{ $match. { _Tôi. '00000000000000000000000a' } }]); . { _Tôi. cầy mangut mới. các loại. ObjectId('00000000000000000000000a') } }]);


Trả về một asyncIterator để sử dụng với các vòng lặp

await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
5 Bạn không cần gọi hàm này một cách rõ ràng, bộ thực thi JavaScript sẽ gọi nó cho bạn

Ví dụ

const agg = Model.aggregate([{ $match: { age: { $gte: 25 } } }]);
for await (const doc of agg) {
  console.log(doc.name);
}

Nút. js 10. x hỗ trợ các trình vòng lặp không đồng bộ mà không có bất kỳ cờ nào. Bạn có thể bật trình vòng lặp không đồng bộ trong Nút. js 8. x sử dụng cờ

await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
6

Ghi chú. Chức năng này không được đặt nếu

await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
7 không được xác định. Nếu
await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
7 không được xác định, điều đó có nghĩa là Nút của bạn. phiên bản js không hỗ trợ trình vòng lặp không đồng bộ


Thông số
  • await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
    
    9 Đặc tả trường «Đối tượng»
trả lại
Nhìn thấy

Nối một toán tử $addFields mới vào đường dẫn tổng hợp này. Yêu cầu MongoDB v3. 4+ để làm việc

Ví dụ


Thông số
  • const res = await Model.aggregate(pipeline).collation({ locale: 'en_US', strength: 1 });
    
    0 «Boolean» Nên thông báo cho máy chủ rằng nó có thể sử dụng ổ cứng để lưu trữ dữ liệu trong quá trình tổng hợp
trả lại
Nhìn thấy

Đặt tùy chọn allowDiskUse cho truy vấn tổng hợp

Ví dụ

await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);


Thông số
  • const res = await Model.aggregate(pipeline).collation({ locale: 'en_US', strength: 1 });
    
    1 «Đối tượng. Array[Object]» (các) toán tử để nối thêm. Có thể là sự trải rộng của các đối tượng hoặc một tham số duy nhất của một mảng đối tượng
trả lại

Nối các toán tử mới vào đường ống tổng hợp này

Ví dụ


Thông số
trả lại

Thực thi truy vấn trả về một

const res = await Model.aggregate(pipeline).collation({ locale: 'en_US', strength: 1 });
2 sẽ được giải quyết bằng (các) tài liệu hoặc bị từ chối do lỗi. Giống như
const res = await Model.aggregate(pipeline).collation({ locale: 'en_US', strength: 1 });
3, nhưng chỉ nhận một trình xử lý từ chối. Tương thích với
const res = await Model.aggregate(pipeline).collation({ locale: 'en_US', strength: 1 });
4


Thông số
trả lại
Nhìn thấy

Thêm một đối chiếu

Ví dụ

________số 8


Thông số
  • const res = await Model.aggregate(pipeline).collation({ locale: 'en_US', strength: 1 });
    
    5 «Chuỗi» Tên của trường đầu ra có giá trị là số đếm. Nó phải là một chuỗi không rỗng, không được bắt đầu bằng $ và không được chứa. nhân vật
trả lại
Nhìn thấy

Nối một toán tử $count mới vào đường dẫn tổng hợp này

Ví dụ

await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
6


Thông số
  • const res = await Model.aggregate(pipeline).collation({ locale: 'en_US', strength: 1 });
    
    6 «Đối tượng»
    • const res = await Model.aggregate(pipeline).collation({ locale: 'en_US', strength: 1 });
      
      7 «Số» đặt kích thước lô con trỏ
    • const res = await Model.aggregate(pipeline).collation({ locale: 'en_US', strength: 1 });
      
      8 «Boolean» sử dụng con trỏ tổng hợp dành riêng cho cầy mangut thử nghiệm (đối với
      const res = await Model.aggregate(pipeline).collation({ locale: 'en_US', strength: 1 });
      
      9 và ngữ nghĩa con trỏ truy vấn khác)
trả lại
  • Con trỏ «AggregationCursor» đại diện cho tập hợp này
Nhìn thấy

Đặt tùy chọn

await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
60 và thực hiện phép tổng hợp này, trả về một con trỏ tổng hợp. Con trỏ rất hữu ích nếu bạn muốn xử lý từng kết quả một lần vì kết quả tổng hợp quá lớn để vừa với bộ nhớ

Ví dụ


Thông số
  • await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
    
    9 «Đối tượng» $densify nội dung toán tử
trả lại
Nhìn thấy

Nối một toán tử $densify mới vào đường dẫn tổng hợp này

Ví dụ

await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
3


Thông số
trả lại
  • «Promise» Trả về một Promise nếu không có "callback" nào được đưa ra

Thực thi đường ống tổng hợp trên Mô hình hiện đang bị ràng buộc

Ví dụ


Thông số
  • await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
    
    62 «Chuỗi»
  • await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
    
    63 «Hàm» Hàm gọi lại để gọi, nếu không được chỉ định, thay vào đó sẽ trả về một Lời hứa
trả lại
  • «Promise» Trả về một lời hứa nếu không có "callback" nào được đưa ra

Thực hiện tổng hợp với giải thích

Ví dụ

await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
6


Thông số
trả lại
Nhìn thấy

Kết hợp nhiều đường ống tổng hợp

Ví dụ


Thông số
  • await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
    
    9 «Đối tượng» $fill nội dung toán tử
trả lại
Nhìn thấy

Nối một toán tử $fill mới vào đường dẫn tổng hợp này

Ví dụ

await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
8


Thông số
  • const res = await Model.aggregate(pipeline).collation({ locale: 'en_US', strength: 1 });
    
    6 «Đối tượng» đến $graphLookup như được mô tả trong liên kết trên
trả lại
Nhìn thấy

Nối (các) toán tử $graphLookup tùy chỉnh mới vào quy trình tổng hợp này, thực hiện tìm kiếm đệ quy trên một bộ sưu tập

Lưu ý rằng graphLookup chỉ có thể tiêu thụ tối đa 100 MB bộ nhớ và không cho phép sử dụng đĩa ngay cả khi chỉ định

await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
66

Ví dụ


Thông số
  • await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
    
    9 «Đối tượng» nội dung của toán tử $group
trả lại
Nhìn thấy

Nối một toán tử $group tùy chỉnh mới vào đường dẫn tổng hợp này

Ví dụ

const agg = Model.aggregate([{ $match: { age: { $gte: 25 } } }]);
for await (const doc of agg) {
  console.log(doc.name);
}
2


Thông số
  • const res = await Model.aggregate(pipeline).collation({ locale: 'en_US', strength: 1 });
    
    0 «Đối tượng. Chuỗi» một đối tượng gợi ý hoặc tên chỉ mục
trả lại
Nhìn thấy

Đặt tùy chọn gợi ý cho truy vấn tổng hợp

Ví dụ

const agg = Model.aggregate([{ $match: { age: { $gte: 25 } } }]);
for await (const doc of agg) {
  console.log(doc.name);
}
4


Thông số
  • await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
    
    69 «Số» số bản ghi tối đa để chuyển sang giai đoạn tiếp theo
trả lại
Nhìn thấy

Nối một toán tử giới hạn $ mới vào đường dẫn tổng hợp này

Ví dụ

const agg = Model.aggregate([{ $match: { age: { $gte: 25 } } }]);
for await (const doc of agg) {
  console.log(doc.name);
}
0


Thông số
  • const res = await Model.aggregate(pipeline).collation({ locale: 'en_US', strength: 1 });
    
    6 «Đối tượng» đến $lookup như được mô tả trong liên kết trên
trả lại
Nhìn thấy

Nối toán tử tra cứu $ tùy chỉnh mới vào đường dẫn tổng hợp này

Ví dụ

const agg = Model.aggregate([{ $match: { age: { $gte: 25 } } }]);
for await (const doc of agg) {
  console.log(doc.name);
}
1


Thông số
  • await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
    
    9 «Đối tượng» $match nội dung toán tử
trả lại
Nhìn thấy

Nối một toán tử $match tùy chỉnh mới vào đường dẫn tổng hợp này

Ví dụ

const agg = Model.aggregate([{ $match: { age: { $gte: 25 } } }]);
for await (const doc of agg) {
  console.log(doc.name);
}
2


Thông số
  • await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
    
    3 «Mô hình» Đặt mô hình được liên kết với tổng hợp này. Nếu không được cung cấp, trả về mô hình đã được lưu trữ
trả lại

Nhận/đặt mô hình mà tập hợp này sẽ thực thi trên

Ví dụ


Thông số
trả lại
Nhìn thấy

Nối một toán tử $geoNear mới vào đường dẫn tổng hợp này

Ghi chú

PHẢI được sử dụng làm toán tử đầu tiên trong đường ống

Ví dụ


Thông số
  • const res = await Model.aggregate(pipeline).collation({ locale: 'en_US', strength: 1 });
    
    6 Phím «Object» để hợp nhất vào các tùy chọn hiện tại
    • await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
      
      34 Boolean «Boolean» nếu đúng, máy chủ MongoDB sẽ sử dụng ổ cứng để lưu trữ dữ liệu trong quá trình tổng hợp này
trả lại
Nhìn thấy

Cho phép bạn đặt các tùy chọn tùy ý, cho phần mềm trung gian hoặc plugin

Ví dụ


Loại

trả lại
  • «Mảng» Đường dẫn hiện tại tương tự như thao tác sẽ được thực thi

Thông số
  • await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
    
    9 «Đối tượng. Chuỗi» đặc tả trường
trả lại
Nhìn thấy

Thông số
  • await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
    
    36 «Chuỗi. ReadPreference» một trong các tùy chọn ưu tiên được liệt kê hoặc bí danh của chúng
  • await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
    
    37 thẻ tùy chọn «Array» cho truy vấn này. KHÔNG DÙNG
trả lại
Nhìn thấy

Đặt tùy chọn readPreference cho truy vấn tổng hợp

Ví dụ

const agg = Model.aggregate([{ $match: { age: { $gte: 25 } } }]);
for await (const doc of agg) {
  console.log(doc.name);
}
3


Thông số
  • await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
    
    38 «Chuỗi» một trong những cấp độ quan tâm đã đọc được liệt kê hoặc bí danh của chúng
trả lại
Nhìn thấy

Đặt mức readConcern cho truy vấn tổng hợp

Ví dụ

const agg = Model.aggregate([{ $match: { age: { $gte: 25 } } }]);
for await (const doc of agg) {
  console.log(doc.name);
}
4


Thông số
  • await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
    
    39 «Đối tượng» tùy chọn biên tập lại hoặc biểu thức điều kiện
  • await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
    
    60 «Chuỗi. Đối tượng» trường hợp đúng cho điều kiện
  • await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
    
    61 «Chuỗi. Đối tượng» trường hợp sai cho điều kiện
trả lại
Nhìn thấy

Nối một toán tử $redact mới vào đường dẫn tổng hợp này

Nếu 3 đối số được cung cấp, Mongoose sẽ bao bọc chúng bằng if-then-else của toán tử $cond tương ứng Nếu

await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
62 hoặc
await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
63 là chuỗi, hãy đảm bảo rằng nó bắt đầu bằng $$, như
await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
64,
await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
65 hoặc
await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
66

Ví dụ


Thông số
  • await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
    
    67 «Chuỗi. Đối tượng» trường hoặc tài liệu sẽ trở thành tài liệu gốc mới
trả lại
Nhìn thấy

Nối một toán tử $replaceRoot mới vào đường dẫn tổng hợp này

Lưu ý rằng toán tử

await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
68 yêu cầu chuỗi trường bắt đầu bằng '$'. Nếu bạn đang chuyển vào một chuỗi, Mongoose sẽ thêm '$' vào trước nếu trường được chỉ định không bắt đầu '$'. Nếu bạn đang truyền vào một đối tượng, các chuỗi trong biểu thức của bạn sẽ không bị thay đổi

Ví dụ

const agg = Model.aggregate([{ $match: { age: { $gte: 25 } } }]);
for await (const doc of agg) {
  console.log(doc.name);
}
5


Thông số
  • await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
    
    69 «Number» số tài liệu ngẫu nhiên để chọn
trả lại
Nhìn thấy

Nối toán tử $sample tùy chỉnh mới vào đường dẫn tổng hợp này

Ví dụ


Thông số
trả lại
Nhìn thấy

Thông số
trả lại
Nhìn thấy

Đặt phiên cho tập hợp này. Hữu ích cho các giao dịch

Ví dụ

const agg = Model.aggregate([{ $match: { age: { $gte: 25 } } }]);
for await (const doc of agg) {
  console.log(doc.name);
}
6


Thông số
  • await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
    
    69 «Number» số bản ghi cần bỏ qua trước giai đoạn tiếp theo
trả lại
Nhìn thấy

Nối một toán tử $skip mới vào đường dẫn tổng hợp này

Ví dụ

const agg = Model.aggregate([{ $match: { age: { $gte: 25 } } }]);
for await (const doc of agg) {
  console.log(doc.name);
}
7


Thông số
trả lại
Nhìn thấy

Nối một toán tử $sort mới vào đường dẫn tổng hợp này

Nếu một đối tượng được thông qua, các giá trị được phép là

await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
81,
await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
82,
await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
83,
await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
84,
await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
85 và
await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
86

Nếu một chuỗi được truyền, nó phải là một danh sách tên đường dẫn được phân tách bằng dấu cách. Thứ tự sắp xếp của mỗi đường dẫn tăng dần trừ khi tên đường dẫn có tiền tố là

await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
87 sẽ được coi là giảm dần

Ví dụ


Thông số
trả lại
Nhìn thấy

Nối một toán tử $sortByCount mới vào đường dẫn tổng hợp này. Chấp nhận tên trường chuỗi hoặc đối tượng đường dẫn

Lưu ý rằng toán tử

await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
88 yêu cầu gốc mới bắt đầu bằng '$'. Mongoose sẽ thêm '$' vào trước nếu tên trường được chỉ định không bắt đầu bằng '$'

Ví dụ

const agg = Model.aggregate([{ $match: { age: { $gte: 25 } } }]);
for await (const doc of agg) {
  console.log(doc.name);
}
8


Thông số
  • await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
    
    89 «Chức năng» gọi lại thành công
  • const agg = Model.aggregate([{ $match: { age: { $gte: 25 } } }]);
    for await (const doc of agg) {
      console.log(doc.name);
    }
    
    20 «Chức năng» errorCallback
trả lại

Cung cấp chức năng

const agg = Model.aggregate([{ $match: { age: { $gte: 25 } } }]);
for await (const doc of agg) {
  console.log(doc.name);
}
21 giống như Lời hứa, sẽ gọi
const agg = Model.aggregate([{ $match: { age: { $gte: 25 } } }]);
for await (const doc of agg) {
  console.log(doc.name);
}
22 mà không cần gọi lại Tương thích với
const res = await Model.aggregate(pipeline).collation({ locale: 'en_US', strength: 1 });
4

Ví dụ

const agg = Model.aggregate([{ $match: { age: { $gte: 25 } } }]);
for await (const doc of agg) {
  console.log(doc.name);
}
9


Thông số
  • const res = await Model.aggregate(pipeline).collation({ locale: 'en_US', strength: 1 });
    
    6 «Đối tượng» tới $unionVới truy vấn như được mô tả trong liên kết trên
trả lại
Nhìn thấy

Nối toán tử $unionWith mới vào đường dẫn tổng hợp này

Ví dụ

await Model.aggregate([{ $match: { foo: 'bar' } }]).allowDiskUse(true);
0


Thông số
  • const agg = Model.aggregate([{ $match: { age: { $gte: 25 } } }]);
    for await (const doc of agg) {
      console.log(doc.name);
    }
    
    25 «Chuỗi. Vật. Mảng[Chuỗi]. Mảng[Đối tượng]» (các) trường để thư giãn, dưới dạng tên trường hoặc dưới dạng đối tượng với các tùy chọn. Nếu truyền một chuỗi, tùy chọn thêm tiền tố vào tên trường bằng '$'. Nếu truyền một đối tượng, thì
    const agg = Model.aggregate([{ $match: { age: { $gte: 25 } } }]);
    for await (const doc of agg) {
      console.log(doc.name);
    }
    
    26 phải bắt đầu bằng '$'
trả lại
Nhìn thấy

Nối thêm (các) toán tử $unwind tùy chỉnh mới vào quy trình tổng hợp này

Lưu ý rằng toán tử

const agg = Model.aggregate([{ $match: { age: { $gte: 25 } } }]);
for await (const doc of agg) {
  console.log(doc.name);
}
27 yêu cầu tên đường dẫn bắt đầu bằng '$'. Mongoose sẽ thêm '$' vào trước nếu trường được chỉ định không bắt đầu '$'

Bỏ qua và giới hạn trong MongoDB là gì?

Hàm limit() trong MongoDB được sử dụng để chỉ định số lượng kết quả tối đa được trả về . Chỉ cần một tham số cho chức năng này. để trả lại số lượng kết quả mong muốn. Đôi khi cần phải trả lại một số kết quả nhất định sau một số tài liệu nhất định. Skip() có thể thực hiện công việc này.

Tập hợp MongoDB có chậm không?

mongodb - Hiệu suất Mongo cực kỳ chậm đối với truy vấn tổng hợp. Stack Overflow for Teams – Bắt đầu cộng tác và chia sẻ kiến ​​thức tổ chức.

Tập hợp MongoDB có nhanh không?

Trên các bộ sưu tập lớn gồm hàng triệu tài liệu, khả năng tổng hợp của MongoDB kém hơn nhiều so với Elaticsearch . Hiệu suất kém hơn với kích thước bộ sưu tập khi MongoDB bắt đầu sử dụng đĩa do RAM hệ thống hạn chế. Giai đoạn tra cứu $ được sử dụng mà không có chỉ mục có thể rất chậm.

Giới hạn $ trong MongoDB là gì?

Phương thức MongoDB – giới hạn() . Về cơ bản, nó xác định giới hạn tối đa của hồ sơ/tài liệu mà bạn muốn. Hay nói cách khác, phương thức này sử dụng trên con trỏ để chỉ định số lượng tài liệu/bản ghi tối đa mà con trỏ sẽ trả về. limits the number of records or documents that you want. It basically defines the max limit of records/documents that you want. Or in other words, this method uses on cursor to specify the maximum number of documents/ records the cursor will return.