检查mongoDB中的批量是否为空

有没有一种方法来检查Mongodb批量之前有一些操作要做.execute()呢? 我很确定我不会发送任何空的对象插入,但不断收到这个错误在一个文件

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插入文件。

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

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

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

 bulk 

返回像这样的东西

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

你的批量操作实际上是空的原因是因为你的h323connecttimeU有一个非法值 – 你需要引用datestring。

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

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