2015-12-09 15 views
10

mongooseを使用してmongoに一括挿入できません。MongoError:無効な操作、バルクでの操作なし

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); 
    } 
}); 

私は

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 

誰も私が私が間違って何をやって教えてください。?次のエラーを取得していますか

+0

誰ですか..? – Ningappa

+0

私は今、すべての更新を経験する同じ問題?? – securecurve

+1

'Web.collection.insert'はMongooseではなく、Mongo構文です。なぜそれが失敗しているのか分かりません。しかし、Mongooseを使用しているので、 'Webs.insertMany(resultData)'を使うことができます。 [docs here](http://mongoosejs.com/docs/api.html#model_Model.insertMany) –

答えて

-1

バルクインスタンスは、この機能をexecuteを呼び出す前に事業を展開していた場合にだけチェック:ここ

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

は、私のチェックでは、ノードのjsの生のMongoDBドライバーを使用していた場合、それが役立つかもしれないかの基本的なブロックであります:

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

ほとんどの場合、空の配列を挿入しようとしています。ここで

は同じ問題に直面して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.

関連する問題