2015-12-09 12 views
10

Ich bin nicht in der Lage, Bulk einfügen, Mongo mit Mungo einfügen.MongoError: Ungültige Operation, keine Operationen in Bulk

var mongoose = require('mongoose'); 
var Schema = mongoose.Schema; 

// Define our results schema 
var webSchema = new Schema({"abc" : String},{ 
    collection: 'web_v2' 
}); 

MyApi.prototype.Webs= mongoose.model('Webs', webSchema); 

resultData = [{"abc": "12121221"},{"abc": "44545"},{"abc": "545"}] 

MyApi.prototype.Webs.collection.insert(resultData, function (err, myDocuments) { 
    if (err) { 
    console.log(err); 
    } else { 
    console.log("web inserted : " + myDocuments.result.n); 
    } 
}); 

Ich erhalte die folgende Fehler

MongoError: Invalid Operation, No operations in bulk 
at Function.MongoError.create (/pathtoapp/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/error.js:31:11) 
at toError (/pathtoapp/node_modules/mongoose/node_modules/mongodb/lib/utils.js:114:22) 
at OrderedBulkOperation.execute (/pathtoapp/node_modules/mongoose/node_modules/mongodb/lib/bulk/ordered.js:500:11) 
at bulkWrite (/pathtoapp/node_modules/mongoose/node_modules/mongodb/lib/collection.js:582:8) 
at Collection.insertMany (/pathtoapp/node_modules/mongoose/node_modules/mongodb/lib/collection.js:477:44) 
at Collection.insert (/pathtoapp/node_modules/mongoose/node_modules/mongodb/lib/collection.js:753:15) 
at NativeCollection.(anonymous function) as insert (/pathtoapp/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js:136:28) 
at /pathtoapp/index.js:481:57 
at /pathtoapp/node_modules/async/lib/async.js:721:13 
at /pathtoapp/node_modules/async/lib/async.js:52:16 
at async.forEachOf.async.eachOf (/pathtoapp/node_modules/async/lib/async.js:236:30) 
at _parallel (/pathtoapp/node_modules/async/lib/async.js:712:9) 
at Object.async.parallel (/pathtoapp/node_modules/async/lib/async.js:726:9) 
at /pathtoapp/index.js:479:43 
at /pathtoapp/node_modules/async/lib/async.js:721:13 
at /pathtoapp/node_modules/async/lib/async.js:52:16 

jemand bitte lassen Sie mich wissen, was ich falsch mache.?

+0

jemand gleiches Problem ..? – Ningappa

+0

das gleiche problem erfahre ich jetzt, irgendwelche updates ?? – securecurve

+1

'Web.collection.insert' ist Mongo-Syntax, nicht Mongoose. Ich bin mir nicht sicher, warum es scheitert. Da Sie Mongoose verwenden, können Sie 'Webs.insertMany (resultData)' verwenden. [Dokumente hier] (http://mongoosejs.com/docs/api.html#model_Model.insertMany) –

Antwort

-1

Genau prüfen, ob die Großinstanzoperationen haben vor execute mit dieser Funktion aufrufen:

const BulkHasOperations = (b) => b && b.s && b.s.currentBatch && b.s.currentBatch.operations && b.s.currentBatch.operations.length > 0; 
... 
const bulk = db.collection('something').initializeUnorderedBulkOp(); 
... 
BulkHasOperations(bulk) && bulk.execute(); 
0

Hier ist meine Prüfung in einem Grunde wenn Block, wenn Sie die rohen MongoDB-Treiber für Knoten js verwendet haben, es könnte helfen :

let col = dbContext.collection("collectionName"); 
let bulk = col.initializeUnorderedBulkOp(); 

if(bulk && bulk.s && bulk.s.currentBatch 
&& bulk.s.currentBatch.operations 
&& bulk.s.currentBatch.operations.length > 0){ 
//execute operations 
} 
1

Wahrscheinlich versuchen Sie, ein leeres Array einzufügen.

Hier ist das MongoDB Jira site reference to this error

This is probably caused by your last insertMany attempting to insert an empty array [ ]. I suggest you insert a guard before insertMany.

Verwandte Themen