Проверьте, пуст ли в mongoDB

Есть ли способ проверить, есть ли у 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 для вставки документов.

Ответ 1

Я сталкиваюсь с той же проблемой. Проверьте bulk.length

if (bulk.length > 0) {
    // run bulk operations
}

Ответ 2

Вы можете легко проверить, работает ли массовая операция:

bulk

возвращает что-то вроде этого

{ "nInsertOps" : 0, "nUpdateOps" : 1, "nRemoveOps" : 0, "nBatches" : 1 }

Причина, по которой ваша массовая операция на самом деле пуста, заключается в том, что ваш h323connecttimeU содержит недопустимое значение - вам нужно указать строку даты.

Кроме того, вы используете массовую операцию неправильно. Это должно быть

bulk.find({"AcctSessionId":insert['AcctSessionId']}).upsert().updateOne(insert);