core: fix problemStat aggr executing

This commit is contained in:
undefined committed 2021-03-12 16:55:42 +08:00
1 parent be0b90dcd4
commit 139c1e2f59
1 file changed
+17 -12
+17 -12
View File
@@ -1,3 +1,4 @@
/* eslint-disable no-await-in-loop */
import db from '../service/db';
import { STATUS } from '../model/builtin';
import * as document from '../model/document';
@@ -26,10 +27,10 @@ export async function udoc() {
},
},
];
const bulk = db.collection('domain.user').initializeUnorderedBulkOp();
db.collection('record').aggregate(pipeline).each(
(err, adoc: any) => {
if (adoc) {
let bulk = db.collection('domain.user').initializeUnorderedBulkOp();
const cursor = db.collection('record').aggregate(pipeline);
while (cursor.hasNext()) {
const adoc = await cursor.next() as any;
bulk.find({
domainId: adoc._id.domainId,
uid: adoc._id.uid,
@@ -39,9 +40,11 @@ export async function udoc() {
nAccept: adoc.nAccept,
},
});
if (bulk.length > 100) {
await bulk.execute();
bulk = db.collection('domain.user').initializeUnorderedBulkOp();
}
}
},
);
if (bulk.length) await bulk.execute();
}
@@ -67,10 +70,10 @@ export async function pdoc() {
},
},
];
const bulk = db.collection('document').initializeUnorderedBulkOp();
db.collection('record').aggregate(pipeline).each(
(err, adoc: any) => {
if (adoc) {
let bulk = db.collection('document').initializeUnorderedBulkOp();
const data = db.collection('record').aggregate(pipeline);
while (await data.hasNext()) {
const adoc = await data.next() as any;
bulk.find({
domainId: adoc._id.domainId,
docType: document.TYPE_PROBLEM,
@@ -81,9 +84,11 @@ export async function pdoc() {
nAccept: adoc.nAccept,
},
});
if (bulk.length > 100) {
await bulk.execute();
bulk = db.collection('domain.user').initializeUnorderedBulkOp();
}
}
},
);
if (bulk.length) await bulk.execute();
}