2014-05-15 6 views
2

카스바 할 방법 : 대량 삽입 나는 MongoCollection에 정의 된 다음 함수를 참조 카스바에서

def 
insert[A](docs: A*)(implicit dbObjView: (A) ⇒ commons.TypeImports.DBObject, concern: mongodb.WriteConcern = writeConcern, encoder: TypeImports.DBEncoder = ...): TypeImports.WriteResult 

나는 당신이 대량 삽입이 기능에 DBObjects의 번호를 전달할 수있는이 권리를 이해한다면

.

내 관심/질문은 매개 변수 목록입니다. 거대한 대량 삽입물을 가지고 있다면 (몇 백 개라고하자)? 이 방법으로 전달할 수있는 객체의 한계가 있습니까?

+0

나는 완전히 질문을 이해하지 못한다. 얼마나 많은 인수가 첫 번째 매개 변수 목록 (또는 일반적으로 varargs)에 전달 될 수 있는지 묻습니다. – sschaef

답변

2

단일 명령 ~ 16MB에서 사용할 수있는 문서의 크기에는 제한이 있으므로이 경로를 통해 수행 할 수있는 삽입 수에는 제한이 있습니다.

val collection = MongoClient()("test")("bulkOperation") 
collection.drop() 

// Ordered bulk operation 
val builder = collection.initializeOrderedBulkOperation 
builder.insert(MongoDBObject("_id" -> 1)) 
builder.insert(MongoDBObject("_id" -> 2)) 
builder.insert(MongoDBObject("_id" -> 3)) 

builder.find(MongoDBObject("_id" -> 1)).updateOne($set("x" -> 2)) 
builder.find(MongoDBObject("_id" -> 2)).removeOne() 
builder.find(MongoDBObject("_id" -> 3)).replaceOne(MongoDBObject("_id" -> 3, "x" -> 4)) 

val result = builder.execute() 

가 주문 또는 순서되는 작업을 참조하십시오 당신이 MongoDB를 2.6 카스바 2.7에서 발표 BulkOperationBuilders 중 하나를 사용하는 경우

그러나, 그것은 자동으로 더 큰 대량 작업을 수행 할 수 있도록 배치로 작업을 분할합니다 : http://mongodb.github.io/casbah/whats_new.html#ordered-unordered-bulk-operations