使用 casbah 创建批量 upsert 的最佳方式

Best way to create bulk upsert with casbah

我正在使用 BulkWriteOperation 来插入批量文档,这是我的代码

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() 

有什么方法可以创建批量更新插入吗?

谢谢,

三木

find 操作 returns 一个 BulkWriteRequestBuilder 允许您 replaceremoveupdate 并将其标记为upsert 请求。因此,要执行更新插入,您可以这样做:

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