Ответ 1
Я сталкиваюсь с той же проблемой. Проверьте bulk.length
if (bulk.length > 0) {
// run bulk operations
}
Есть ли способ проверить, есть ли у Mongodb bulk какие-либо операции перед вызовом .execute() на нем? Я уверен, что я не отправляю пустые объекты для вставки, но продолжаю получать эту ошибку на одном документе
Invalid Operation, No operations in bulk
Вот какой код:
bulk.find({"AcctSessionId":insert['AcctSessionId']}).upsert().update({$set:insert});
и объект вставки выглядит так:
{ AcctStatusTypeU: '3',
AcctSessionId: '1183628512-105130252',
h323setuptimeU: '<sip:[email protected]>',
h323connecttimeU: Sun Mar 08 2015 19:30:37 GMT+0100 (CET),
AcmeSessionEgressRealmU: '620',
AcmeSessionIngressRealmU: 'CORE_PSX'
}
Я вижу, что мои объекты вставлены, но все равно получаю эту ошибку. Кстати, это драйвер Nodejs, о котором я говорю, и я использую UNorderedBulkOp для вставки документов.
Я сталкиваюсь с той же проблемой. Проверьте bulk.length
if (bulk.length > 0) {
// run bulk operations
}
Вы можете легко проверить, работает ли массовая операция:
bulk
возвращает что-то вроде этого
{ "nInsertOps" : 0, "nUpdateOps" : 1, "nRemoveOps" : 0, "nBatches" : 1 }
Причина, по которой ваша массовая операция на самом деле пуста, заключается в том, что ваш h323connecttimeU
содержит недопустимое значение - вам нужно указать строку даты.
Кроме того, вы используете массовую операцию неправильно. Это должно быть
bulk.find({"AcctSessionId":insert['AcctSessionId']}).upsert().updateOne(insert);