mongoDB 中的游标隔离

2024-05-07

首先请原谅我问了一个愚蠢的问题,但我是 mongodb 和学习游标的新手。我有一个问题,为什么我们需要游标隔离?手册说“如果文档发生更改,对文档的干预写入操作可能会导致游标多次返回该文档。”。我无法理解这一点。如果有人可以提供更多说明或举一些例子,我会很高兴。


好的,基本上 MongoDB 直接从数据文件中批量读取 100 个(可以更改为batch_size最大为 16MB,基本上返回的是单个 BSON 文档)。

这与写出静态结果集的 SQL 形成对比。因此,您立即就会明白,如果游标具有与其交错的操作,则如果它们在排序中发生变化,即如果您有以下查询,则它们可以返回文档:

db.c.find().sort({s:1});

Where s是一个整数,您可以借此修改找到的具有最高值的第一个文档s这样它就会出现在后面,您实际上可以(通过最后一批)再次获取该文档。

这当然是一个大问题。在某些情况下,您最终可能会原地踏步,永远无法完成查询。

通常这是不可能的,使用I在 ACID 中,但是你必须明白 MongoDB 不喜欢 ACID 并且不遵循它(http://docs.mongodb.org/manual/faq/concurrency/ http://docs.mongodb.org/manual/faq/concurrency/)并使用特定的并发规则,这些规则实际上打破了游标隔离,使得写入操作更新游标s即使它发生在另一个线程中,文档的内容也会在您耗尽光标之前发生。

希望这已经为您解决了问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mongoDB 中的游标隔离 的相关文章

  • 错误:grid.mongo.GridStore不是构造函数,使用mongoose、Grid-fs-stream和grid multer存储

    我收到以下提到的错误 基本配置如下 我已经将文件上传到服务器上 我想下载它们但出现这些错误 我向 api files delete fileId 调用了 POST 请求 它应该调用路由并将文件返回给浏览器 而不是使用网格相关模块获取错误 M
  • MongoDB聚合选择性项目

    我在聚合聚合期间遇到了重塑文档的问题 基本上我想根据条目的类型将条目推送到字段中 我的结构如下 id P1 entities type A val X type B val X type A val Y 我想 unwind 和 projec
  • MongooseError:操作 `orders.deleteMany()` 缓冲在 10000 毫秒后超时

    当我运行我的应用程序时npm run seeder然后我面临这个错误 我仔细检查了我的数据库连接 没问题 另外 我检查了我的 ordermodels 文件也没有问题 我用过MongoDB的compass没有任何问题 我不知道为什么显示buf
  • MongoDB:与基本查找相比,管道查找性能较慢

    我有两个收藏 matches date 2020 02 15T17 00 00Z players id 5efd9485aba4e3d01942a2ce id 5efd9485aba4e3d01942a2cf and players id
  • Mongo 正则表达式用于“不匹配”或反向[重复]

    这个问题在这里已经有答案了 我的 mongo 文档都包含一个名为templateName 有一些包含该值的文档 a SystemDefaultTemplate b SystemDefaultTemplate c SystemDefaultT
  • 在 MongoDB Java 驱动程序中如何使用 $filter

    我有一个适用于 MQL 的查询 我需要将其翻译成Java MQL 中的查询如下所示 db
  • 最新 .Net MongoDb.Driver 的连接问题

    我创建了一个 MongoLab 沙箱数据库 我与 MongoChef 连接 效果很好 我通过 Nuget 安装了 MongoDB Driver 2 2 2 我编写了一些简单的 C 演示代码 但就是无法使其工作 连接字符串是直接从 Mongo
  • 使用 Mongoose 将数组(“标签”)保存到 MongoDB

    我正在玩 Mongoose 但在保存到数组时遇到问题 例如 我在页面上有一个以逗号分隔的输入字段tags 我从 req body tags 中获取这些内容 删除空格 然后用逗号分隔它们以获得标签数组 现在 如何将该数组保存回我的数据库 我猜
  • Express MongoDB find() 基于 _id 字段

    因此 在我的 Express 应用程序中 我尝试根据我的 id 字段查找 请参阅下面我的 MongoDB 记录 id oid 58c2a5bdf36d281631b3714a title EntertheBadJah subTitle Lo
  • Mongodb聚合管道大小和速度问题

    我正在尝试使用 mongodb 聚合查询来连接 lookup 两个集合 然后对连接数组中的所有唯一值进行不同计数 注意 我不一定知道metaDataMap 数组中有哪些字段 键 我不想计算或包含地图中可能存在或不存在的字段 这就是聚合查询看
  • MongoDB - 在父文档中填充 GridFS 文件元数据

    我使用 NodeJS 与 Express MongoDB Mongoose 和 GridFS 来上传和检索文件 我想通过 ID 引用其他文档中的文件 并在查询其他文档时填充文件元数据 例如 如果我有一个包含这样的文档的 用户 集合 id O
  • 使用 mongoose 更新 mongoDb 中数组内的对象[重复]

    这个问题在这里已经有答案了 我正在 MongoDB 上工作 以更新 MongoDB 集合中数组内部的对象值 我的收藏就像 id ObjectId 59b7e839200a5c00ee2d2851 player New playesList
  • 如何在 MongoDB 中获取连接的客户端

    我正在编写一个使用 mongo 作为数据库的应用程序 我想打印连接到数据库的客户端 例如打印他们的ip 我怎样才能得到这些信息 我尝试使用 db serverStatus connections 但它给了我可以访问我的数据库的计算机数量 您
  • mongodb C# 异常无法从 BsonType Int32 反序列化字符串

    我是在 C 中使用 mongo db 的新手 但我正在尝试在 mongo db 中导入大型数据库 MyDb 由仅具有简单参数 Id Body Title Tags 的实体组成 这是 mongo 中实体的示例 Id someff asdsa
  • 对开始和结束范围进行分组和计数

    如果我有以下格式的数据 id 1 startDate ISODate 2017 01 1T00 00 00 000Z endDate ISODate 2017 02 25T00 00 00 000Z type CAR id 2 startD
  • MongoDB - 从每个对话中获取最后一条消息?

    我有一个对话集合 id from userA to userB message Hello datetime 我想显示用户对话的预览 当前用户与任何其他用户之间每次对话的最后一条消息 因此 当用户单击某些 最后一条消息 时 他会转到下一页
  • 下一个和上一个文档

    我正在制作一个图片库 每个图像都有一个 id 当我查看图像时 我想要接下来的 3 个图像和之前的 3 个图像 我怎样才能在 mongodb 查询中得到这个 我认为我可以使用 sort by id 因为这是不可排序的 也许使用mapReduc
  • Mongoose:转换为 ObjectId 失败

    我正在尝试在 MongoDB 中创建一个类别层次结构 以便通过 Mongoose 与 Node js 一起使用 我正在使用祖先数组方法 http docs mongodb org manual tutorial model tree str
  • 将位置数据存储在 Mongodb 文档中

    在我当前的项目中 我将位置数据以以下格式存储在 Mongodb 文档中 location loc lng 118 15592692 lat 34 03566804 geocode city East Los Angeles state CA
  • 在 cl-mongo 中实现 MongoDB SASL 身份验证

    我已经从 fons 分叉了 cl mongo common lisp MongoDB 库 存储库 因为它已经不再维护并且不支持 SCRAM SHA 1 登录过程 这是我的叉子 https github com mprelude cl mon

随机推荐

  • ML.NET 无法在 uwp 上运行

    我在 Visual Studio 2017 中构建了一个 UWP 应用程序 并在解决方案中添加了一个类库来运行 ML NET 但每次运行该应用程序时都会出现异常 PlatformNotSupportedException 此平台不支持检索有
  • 反规范化 XSD

    我需要对 XML 模式进行非规范化 以便为将创建符合该模式的文档的人员生成文档 用户不了解 XSD 并且很可能永远不会学习 我见过的工具能够为其他 XSD 开发人员生成文档 但我的用户对如何构建架构的细节不感兴趣 他们只想知道他们可以做什么
  • 更改称为通知的 applescript 的图标

    有了 OSX Mavericks 我们现在可以带有 applescript 的通知 http www macosautomation com mavericks notifications index html很容易 然而 似乎没有一种方法
  • 如何将测试文件夹添加到旧的 Android Studio 项目

    我在将用于测试的项目结构添加到 Android Studio 中的旧 Android 项目中时遇到一些问题 当您在 Android Studio 中创建新项目时 您将获得从一开始就创建的用于测试的目录 src test java for u
  • 最后一项具有不同类型的元组(首先从剩余元素开始)

    我有一个类型Foo那是一个Array可以包含任意数量的Bar元素 带有可选的最后一个Qux元素 以下是一些有效数据的示例 bar qux bar qux bar bar bar bar bar bar bar bar qux 无效数据示例
  • 如何绘制多面直方图(不是条形图)以及相对于每个面的百分比?

    虽然有几篇关于如何在条形图的每个方面使用缩放百分比的帖子 但我没有看到任何帖子显示如何在直方图中执行此操作 可以这样做吗 这是我研究过的两篇文章 所以帖子1 使用 ggplot2 获取反映各个方面的百分比比例 https stackover
  • 如何在 R 组内的两个变量的组合上选择具有特定值的行

    这是我之前提出的 R 问题的扩展 如何在R中选择组内具有特定值的行 https stackoverflow com questions 55853841 how to select rows with certain values with
  • 如何在Java中从一组选定的颜色中输出随机颜色? (安卓)

    因此 我希望每当用户输入答案时都为字符串赋予随机颜色 我的问题是 我不确定如何使字符串的随机颜色成为特定范围的颜色 例如 如果我希望字符串随机变成蓝色 红色 绿色 粉色 白色或棕色 只有这些颜色 没有其他颜色 到目前为止 我已经使用以下代码
  • Python:如何将包含对象的列表保存在文件中?

    我尝试创建不同的对象 使用类和对象 并将它们保存在文件中以便稍后编辑或检索它们 然而这就是它的样子 GlobalCategories GlobalContent def LoadData x y import pickle with ope
  • 为什么自动关闭脚本元素不起作用?

    浏览器无法正确识别的原因是什么 只有这一点是公认的 这是否打破了 XHTML 支持的概念 注意 此声明至少对于所有 IE 6 8 beta 2 都是正确的 XHTML 1 规范的非规范性附录 HTML 兼容性指南 指出 3 元素最小化和空元
  • 应用程序和插件修订,使 Origen 应用程序生产做好准备

    我们的开发应用程序有大约 12 个自制插件和许多 Origen gems 需要从开发转向生产级质量 我看到许多不同的主题开始here http origen sdk org origen guides misc revisioncontro
  • 如何在网页上使用 Apple 新的 San Francisco 字体

    我想在网站上使用新的 San Francisco 字体 我试过了 font San Francisco Helvetica Arial san serif 无济于事 我已经尝试过以下问题的答案这个问题 https stackoverflow
  • matplotlib - 模块“sip”没有属性“setapi”

    我刚刚设置了带有所有 Python 扩展的 VS Code 通过 Anaconda Python 版本为 3 8 3 解释器是 venv 当我运行这段代码时 import matplotlib pyplot as plt 错误显示 Exce
  • MySQL 不将 ı 视为 i?

    我在 MySQL 5 7 27 中有一个用户表utf8mb4 unicode ci整理 不幸的是 没有像 i 那样进行线程化 以下查询将找不到Y lmaz select id from users where name Yilmaz 我对其
  • 转换为 id 与真实类类型之间的差异,目标 C

    以下 2 种说法有什么区别 UILabel mainLabel id cell viewWithTag 10 and UILabel mainLabel UILabel cell viewWithTag 10 简短的回答 没有 这两种强制转
  • 如何对URL参数传输的秘密数据进行编码/加密?

    故事是这样的 我必须将一些机密信息从一个脚本传递到另一个脚本 在第一个脚本中 我需要先加密数据 然后再加密have to将加密数据附加到 GET 请求中并将其发送到另一个脚本 URL 看起来像这样 http mydomain com mys
  • 阻止 OpenGL.framework 在 Cocoa 应用程序中加载

    我的应用程序链接到这些框架 Cocoa Framework AppKit Framework CoreData Framework Foundation Framework 请注意 OpenGL Framework 是NOT已链接 但是 设
  • 如何在iframe中隐藏滚动条,但仍然能够滚动

    我的一个页面上有一个 iframe 其中有另一个页面 我想隐藏滚动条 但我找不到任何解决方案 我尝试过overflow hidden 但它不起作用 见下面的代码 CSS代码 iframe overflow hidden 由于您没有指定是否需
  • Pandas 随机样本删除

    我知道DataFrame sample 但是我怎样才能做到这一点并从数据集中删除样本呢 注意 据我所知 这与替换采样无关 例如这里是精华我想要实现的目标 这实际上不起作用 len df 1000 df subset df sample 30
  • mongoDB 中的游标隔离

    首先请原谅我问了一个愚蠢的问题 但我是 mongodb 和学习游标的新手 我有一个问题 为什么我们需要游标隔离 手册说 如果文档发生更改 对文档的干预写入操作可能会导致游标多次返回该文档 我无法理解这一点 如果有人可以提供更多说明或举一些例