使用 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
允许您 replace
、remove
、update
并将其标记为upsert
请求。因此,要执行更新插入,您可以这样做:
val builder: BulkWriteOperation = collection.initializeOrderedBulkOperation
builder.find(MongoDBObject("_id" -> 1)).upsert().updateOne($set("x" -> 2))
val result = builder.execute()
我正在使用 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
允许您 replace
、remove
、update
并将其标记为upsert
请求。因此,要执行更新插入,您可以这样做:
val builder: BulkWriteOperation = collection.initializeOrderedBulkOperation
builder.find(MongoDBObject("_id" -> 1)).upsert().updateOne($set("x" -> 2))
val result = builder.execute()