2015-04-23 21 views
11

C'è un modo per verificare se Mongodb bulk ha delle operazioni da fare prima di chiamare .execute() su di esso? Sono abbastanza sicuro che non mando alcun oggetto vuoto per inserire, ma continuo a ricevere questo errore su un unico documentoControlla se bulk è vuoto in mongoDB

Invalid Operation, No operations in bulk 

Ecco il codice:

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

e inserire l'oggetto si presenta così

{ 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' 
} 

Vedo i miei oggetti inseriti ma ottengo ancora questo errore. Dal modo in cui questo è un driver Nodejs di cui sto parlando e sto usando UNorderedBulkOp per inserire documenti.

+0

Credo che non esiste un metodo per fare questo controllo ... – vodich

risposta

0

Si può facilmente verificare che scendessimo un'operazione di massa ha le operazioni da eseguire:

bulk 

restituisce qualcosa di simile

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

Il motivo per cui l'operazione di massa in realtà è vuoto è perché il vostro h323connecttimeU detiene una valore illegale - è necessario citare la stringa della data.

Inoltre, si sta utilizzando l'operazione di massa in modo errato. Dovrebbe essere

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

no, la data va bene ho solo copiato ma è istanziato come new Date ("data stringa"), non è sicuro a proposito della parte più attiva visto che funziona proprio così, metterà alla prova. Come si usa "bulk" nel codice. La mia ipotesi è che tu la usi come hai scritto in console, giusto? – vodich

+0

@vodich Corretto, dato che è MongoDB [lingua franca] (https://en.wikipedia.org/wiki/Lingua_franca). E non è necessario impostare il proprio documento 'insert', è sufficiente impostare singoli campi. –

7

Mi imbatto nello stesso problema. Controllare bulk.length

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