- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在使用 pymongo 在一次查询中获取大约 2M 文档,每个文档仅包含三个字符串字段。查询只是一个简单的 find(),没有任何 limit() 或 batchSize()。
在遍历光标时,我注意到脚本在处理了大约 25k 个文档后等待了大约 30~40 秒。
所以我想知道 mongo 是否会在一批中返回所有 2M 结果? pymongo 中默认的 batchSize() 是什么?
最佳答案
MongoDB 中的游标默认返回最多 101 个文档或足以让您达到 1 MB。在弹出到 4MB 之后通过光标进行迭代的调用。返回的文档数量取决于您的文档大小:
Cursor Batches
The MongoDB server returns the query results in batches. Batch size will not exceed the maximum BSON document size. For most queries, the first batch returns 101 documents or just enough documents to exceed 1 megabyte. Subsequent batch size is 4 megabytes. To override the default size of the batch, see batchSize() and limit().
For queries that include a sort operation without an index, the server must load all the documents in memory to perform the sort and will return all documents in the first batch.
As you iterate through the cursor and reach the end of the returned batch, if there are more results, cursor.next() will perform a getmore operation to retrieve the next batch.
http://docs.mongodb.org/manual/core/cursors/
您可以在光标上使用 pymongo 中的 batch_size() 方法来覆盖默认值 - 但是它不会超过 16 MB(最大 BSON 文档大小):
batch_size(batch_size)
Limits the number of documents returned in one batch. Each batch requires a round trip to the server. It can be adjusted to optimize performance and limit data transfer.
Note
batch_size can not override MongoDB’s internal limits on the amount of data it will return to the client in a single batch (i.e if you set batch size to 1,000,000,000, MongoDB will currently only return 4-16MB of results per batch).
Raises TypeError if batch_size is not an integer. Raises ValueError if batch_size is less than 0. Raises InvalidOperation if this Cursor has already been used. The last batch_size applied to this cursor takes precedence. Parameters :
batch_size: The size of each batch of results requested.
http://api.mongodb.org/python/current/api/pymongo/cursor.html
关于mongodb - pymongo 中的默认 batchSize 是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25126447/
首先我将解释我是如何理解和使用 @BatchSize 的:@BatchSize是为了批量加载对象关系,减少对数据库的SQL请求。这对于 LAZY @OneToMany 关系特别有用。 然而,它甚至对
hibernate 的@BatchSize 注释允许批量获取延迟加载的实体。例如。如果我得到类似的东西: public class Product { @OneToMany(fetchType
我在一些旧代码中发现了奇怪的东西(至少对我而言)。 注解为@ManyToOne 的字段也被注解为@BatchSize。 我一直认为 @BatchSize 注释只影响在类级别或集合上注释时 (@OneT
我有一个 user_batch 集合。它包含以下文件: [{ _id: ObjectId("594baf96256597ec035df23c"), name: "Batch 1", bat
使用 Dataflow CTP(在 TPL 中) 如果当前排队或推迟的项目数量小于 BatchSize,超时后是否可以自动调用 BatchBlock.TriggerBatch? 更好的是:每次 blo
我从网上和论坛上阅读了有关 BatchSize 的相关主题,但我仍然不明白某些部分。那么让我们描述一下我理解的内容和不理解的内容。 Batch fetching: an optimization st
我是 Hibernate 新手,但我对 @Batchsize 注释的工作有疑问。我理解它是如何工作的,但我不明白它如何对实体 id 进行分组以供选择。例如 - 我有 2 个类(class):汽车和车轮
Hibernate documentation在@BatchSize 中提供了一些信息: @BatchSize specifies a "batch size" for fetching instan
如何在定义了 batchSize 的情况下迭代游标批处理文档?例如,当 batchSize 定义为等于 50 时,有没有办法迭代这 50 个子文档? var myCursor = collection
我有一个 java jpa/hibernate 应用程序需要获取大量数据才能执行其任务。我遇到了 n+1 问题,所以我决定使用 hibernate.default_batch_fetch_size (
我将分页与 hibernate spring-data-jpa 和 querydsl 一起使用,并且我使用 @BatchSize(size=10) 只进行一次数据库往返。 @Entity @Table
我正在使用 pymongo 在一次查询中获取大约 2M 文档,每个文档仅包含三个字符串字段。查询只是一个简单的 find(),没有任何 limit() 或 batchSize()。 在遍历光标时,我注
我有一个带有多个队列触发器的 .NET Azure 函数。我配置了 host.json 文件(见下文),该文件一次最多使 4 条消息出队。 { "queues": { "max
这两者之间有不兼容吗? 我有一个n + 1我尝试使用专有的 hibernate @BatchSize 注释解决这个问题。 public class Master{ @OneToMany(fet
嗨,我使用 spring 数据来映射我的实体和存储库。映射非常简单: public class Car { Set parts; } public class Part { } 我使用 Spri
我每次迭代都使用来自一个非常大的文件的批处理来更新我的参数。但在执行此操作之前,我想将整个大型数据集拆分为测试和训练集。通过交叉验证,我想做同样的事情。 我曾尝试使用 dask 拆分整个集合,然后将一
以下查询返回我的所有用户。我本来希望它能分批进行。 statics.findAllUsers = function findAllUsers(callback) { this.find({}, c
我正在使用 Hibernate 4.2,我有一个包含子实体集合的父实体(一对多,获取类型为 LAZY 并用 @BatchSize(size=100) 注释). 如果我查询并加载几个父实体并调用访问包含
MongoDB 游标对象提供了一个 BatchSize 属性 and 和 Limit 属性,但我似乎找不到任何可以正确阐明的明确信息两者的区别。 我正在使用 .Net 驱动程序,物有所值。 最佳答案
使用 TensorFlow.js 定义模型后,您可以运行 model.fit()训练它。这个函数需要一些参数,包括一个配置对象。这个对象有一个属性 batchSize . documentation
我是一名优秀的程序员,十分优秀!