检查mongoDB中的批量是否为空

时间:2015-04-23 08:23:26

标签: node.js mongodb

有没有办法在调用.execute()之前检查Mongodb批量是否有一些操作要做? 我很确定我不会发送任何空对象来插入但是在一个文档上不断出现此错误

Invalid Operation, No operations in bulk

以下是一些代码:

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

并且插入对象看起来像这样

{ AcctStatusTypeU: '3',
  AcctSessionId: '1183628512-105130252',
  h323setuptimeU: '<sip:27117929995@41.66.146.252>',
  h323connecttimeU: Sun Mar 08 2015 19:30:37 GMT+0100 (CET),
  AcmeSessionEgressRealmU: '620',
  AcmeSessionIngressRealmU: 'CORE_PSX' 
}

我看到我的对象已插入但仍然出现此错误。顺便说一下,这是我正在谈论的Nodejs驱动程序,我正在使用UNorderedBulkOp来插入文档。

2 个答案:

答案 0 :(得分:9)

我遇到了同样的问题。检查bulk.length

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

答案 1 :(得分:0)

您可以轻松检查批量操作是否有执行操作:

bulk

返回类似这样的内容

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

批量操作实际为空的原因是因为您的h323connecttimeU持有非法值 - 您需要引用日期字符串。

此外,您正在以错误的方式使用批量操作。它应该是

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