2015-01-06 11 views
0

им с использованием BulkWriteOperation для вставки объемных документов, это мой кодЛучший способ для создания объемной upsert с касбой

val builder: casbah.BulkWriteOperation = collection.initializeOrderedBulkOperation 

for(p<-posts){ 

if (p._1.\("object_id").asOpt[String].getOrElse("") != "" && p._1.\("message").asOpt[String].getOrElse("") !="") 
builder.insert(MongoDBObject("id" -> p._1.\("id").asOpt[String], "object_id" -> p._1.\("object_id").asOpt[String], "message" -> p._1.\("message").asOpt[String],"shares"->p._1.\("shares").\("count").asOpt[Long].getOrElse(0),"likes"->p._2.\("summary").\("total_count").asOpt[Long].getOrElse(0))) 

} 

val result = builder.execute() 

Есть ли способ, чтобы создать Bulk Upsert?

спасибо,

Мики

ответ

0

Да find операция возвращает BulkWriteRequestBuilder, который позволяет вам replace, remove, update и пометить его как upsert запрос. Поэтому, чтобы выполнить upsert, вы можете сделать:

val builder: BulkWriteOperation = collection.initializeOrderedBulkOperation 
builder.find(MongoDBObject("_id" -> 1)).upsert().updateOne($set("x" -> 2)) 
val result = builder.execute()