gpt4 book ai didi

mongodb - 如何做 casbah 批量插入

转载 作者:可可西里 更新时间:2023-11-01 10:04:24 24 4
gpt4 key购买 nike

在 casbah 中,我看到在 MongoCollection 上定义了以下函数:

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

如果我没理解错的话,您可以将多个 DBObject 传递给此函数以进行批量插入。

我的顾虑/问题是这是一个参数列表。如果我有一个巨大的批量插入(比如几百个)怎么办?可以通过这种方式传递的对象有限制吗?

最佳答案

可以在单个命令中使用的文档大小有限制 ~16mb,因此您可以通过该路径执行的插入数量有限制。

但是,如果您使用 Casbah 2.7 中针对 MongoDB 2.6 发布的 BulkOperationBuilder 之一,它会自动将操作拆分为多个批处理,以便您可以执行更大的批量操作:

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

有有序或无序操作见:http://mongodb.github.io/casbah/whats_new.html#ordered-unordered-bulk-operations

关于mongodb - 如何做 casbah 批量插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23684938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com