반응형
Mongo 오류:잘못된 작업, 대량 작업 없음
몽구스를 사용하여 몽고에 대량 삽입할 수 없습니다.
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
누구든지 제가 무엇을 잘못하고 있는지 알려주세요.?
대부분 빈 배열을 삽입하려고 합니다.
다음은 이 오류에 대한 MongoDB Jira 사이트 참조입니다.
마지막 insertMany가 빈 배열 [ ]을(를) 삽입하려고 시도했기 때문일 수 있습니다.Many를 삽입하기 전에 가드를 삽입하는 것이 좋습니다.
호출하기 전에 대량 인스턴스에 작업이 있는지 확인하십시오.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();
만약 당신이 노드 j에 대해 원시 MongoDB 드라이버를 사용하고 있다면, 다음과 같은 도움이 될 수 있는 기본 if 블록에 대한 나의 체크입니다.
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
}
bulkWrite([...elements])로 전달할 배열을 확인합니다.요소 배열은 비워 둘 수 없으며 모든 요소는 개체여야 하며 개체는 작업 유형, 필터 및 업데이트 필드의 속성을 포함해야 합니다.또한 비워둘 수 없습니다.
언급URL : https://stackoverflow.com/questions/34173648/mongoerror-invalid-operation-no-operations-in-bulk
반응형
'programing' 카테고리의 다른 글
Python 스크립트가 실행을 완료하는 데 소요된 시간 확인 (0) | 2023.07.05 |
---|---|
nodejs가 marida db에 연결할 수 없습니다.명령줄을 통해 연결 가능 (0) | 2023.07.05 |
Java Oracle 예외 - "목록의 최대 식 수는 1000개입니다." (0) | 2023.07.05 |
'--color' 및 '--format specdoc' 옵션을 설정한 상태로 유지하도록 RSpec을 글로벌하게 구성하려면 어떻게 합니까? (0) | 2023.07.05 |
ANSIC에서 복합 문(블록)이 부모 표현식으로 둘러싸여 있습니까? (0) | 2023.07.05 |