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
4 là một chuỗi trong cơ sở dữ liệuawait Model.aggregate[[{ $match: { foo: 'bar' } }]].allowDiskUse[true];
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ạnVí 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];
6Ghi 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ố
9 Đặc tả trường «Đối tượng»await Model.aggregate[[{ $match: { foo: 'bar' } }]].allowDiskUse[true];
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ố
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ợpconst res = await Model.aggregate[pipeline].collation[{ locale: 'en_US', strength: 1 }];
Đặ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ố
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ượngconst res = await Model.aggregate[pipeline].collation[{ locale: 'en_US', strength: 1 }];
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ạiThự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 }];
4Thông sốtrả lạiNhìn thấyThêm một đối chiếu
Ví dụ
________số 8Thông số
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ậtconst res = await Model.aggregate[pipeline].collation[{ locale: 'en_US', strength: 1 }];
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
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ớiconst res = await Model.aggregate[pipeline].collation[{ locale: 'en_US', strength: 1 }];
9 và ngữ nghĩa con trỏ truy vấn khác]const res = await Model.aggregate[pipeline].collation[{ locale: 'en_US', strength: 1 }];
- Con trỏ «AggregationCursor» đại diện cho tập hợp nà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ố
9 «Đối tượng» $densify nội dung toán tửawait Model.aggregate[[{ $match: { foo: 'bar' } }]].allowDiskUse[true];
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];
3Thô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ố
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ứaawait Model.aggregate[[{ $match: { foo: 'bar' } }]].allowDiskUse[true];
- «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];
6Thông sốtrả lạiNhìn thấyKết hợp nhiều đường ống tổng hợp
Ví dụ
Thông số
9 «Đối tượng» $fill nội dung toán tửawait Model.aggregate[[{ $match: { foo: 'bar' } }]].allowDiskUse[true];
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];
8Thông số
6 «Đối tượng» đến $graphLookup như được mô tả trong liên kết trênconst res = await Model.aggregate[pipeline].collation[{ locale: 'en_US', strength: 1 }];
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];
66Ví dụ
Thông số
9 «Đối tượng» nội dung của toán tử $groupawait Model.aggregate[[{ $match: { foo: 'bar' } }]].allowDiskUse[true];
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];
}
2Thông số
0 «Đối tượng. Chuỗi» một đối tượng gợi ý hoặc tên chỉ mụcconst res = await Model.aggregate[pipeline].collation[{ locale: 'en_US', strength: 1 }];
Đặ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];
}
4Thông số
69 «Số» số bản ghi tối đa để chuyển sang giai đoạn tiếp theoawait Model.aggregate[[{ $match: { foo: 'bar' } }]].allowDiskUse[true];
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];
}
0Thông số
6 «Đối tượng» đến $lookup như được mô tả trong liên kết trênconst res = await Model.aggregate[pipeline].collation[{ locale: 'en_US', strength: 1 }];
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];
}
1Thông số
9 «Đối tượng» $match nội dung toán tửawait Model.aggregate[[{ $match: { foo: 'bar' } }]].allowDiskUse[true];
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];
}
2Thông số
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ữawait Model.aggregate[[{ $match: { foo: 'bar' } }]].allowDiskUse[true];
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ạiNhìn thấyNố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ố
6 Phím «Object» để hợp nhất vào các tùy chọn hiện tạiconst res = await Model.aggregate[pipeline].collation[{ locale: 'en_US', strength: 1 }];
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àyawait Model.aggregate[[{ $match: { foo: 'bar' } }]].allowDiskUse[true];
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ạitrả lại- «Mảng» Đường dẫn hiện tại tương tự như thao tác sẽ được thực thi
9 «Đối tượng. Chuỗi» đặc tả trườngawait 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úngawait Model.aggregate[[{ $match: { foo: 'bar' } }]].allowDiskUse[true];
37 thẻ tùy chọn «Array» cho truy vấn này. KHÔNG DÙNGawait Model.aggregate[[{ $match: { foo: 'bar' } }]].allowDiskUse[true];
Đặ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];
}
3Thông số
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úngawait Model.aggregate[[{ $match: { foo: 'bar' } }]].allowDiskUse[true];
Đặ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];
}
4Thông số
39 «Đối tượng» tùy chọn biên tập lại hoặc biểu thức điều kiệnawait Model.aggregate[[{ $match: { foo: 'bar' } }]].allowDiskUse[true];
60 «Chuỗi. Đối tượng» trường hợp đúng cho điều kiệnawait Model.aggregate[[{ $match: { foo: 'bar' } }]].allowDiskUse[true];
61 «Chuỗi. Đối tượng» trường hợp sai cho điều kiệnawait Model.aggregate[[{ $match: { foo: 'bar' } }]].allowDiskUse[true];
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];
66Ví dụ
Thông số
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ớiawait Model.aggregate[[{ $match: { foo: 'bar' } }]].allowDiskUse[true];
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 đổiVí dụ
const agg = Model.aggregate[[{ $match: { age: { $gte: 25 } } }]];
for await [const doc of agg] {
console.log[doc.name];
}
5Thông số
69 «Number» số tài liệu ngẫu nhiên để chọnawait Model.aggregate[[{ $match: { foo: 'bar' } }]].allowDiskUse[true];
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ạiNhìn thấyThông sốtrả lạiNhì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];
}
6Thông số
69 «Number» số bản ghi cần bỏ qua trước giai đoạn tiếp theoawait Model.aggregate[[{ $match: { foo: 'bar' } }]].allowDiskUse[true];
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];
}
7Thông sốtrả lạiNhìn thấyNố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];
86Nế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ầnVí dụ
Thông sốtrả lạiNhìn thấyNố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];
}
8Thông số
89 «Chức năng» gọi lại thành côngawait Model.aggregate[[{ $match: { foo: 'bar' } }]].allowDiskUse[true];
20 «Chức năng» errorCallbackconst agg = Model.aggregate[[{ $match: { age: { $gte: 25 } } }]]; for await [const doc of agg] { console.log[doc.name]; }
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 }];
4Ví dụ
const agg = Model.aggregate[[{ $match: { age: { $gte: 25 } } }]];
for await [const doc of agg] {
console.log[doc.name];
}
9Thông số
6 «Đối tượng» tới $unionVới truy vấn như được mô tả trong liên kết trênconst res = await Model.aggregate[pipeline].collation[{ locale: 'en_US', strength: 1 }];
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];
0Thông số
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 '$'const agg = Model.aggregate[[{ $match: { age: { $gte: 25 } } }]]; for await [const doc of agg] { console.log[doc.name]; }
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 '$'