问题标签 [changestream]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mongodb - MongoDB 更改流副本集限制
仅在副本集上提供更改流的原因是什么?
mongodb - 在 mongo shell 中创建 mongo 更改流
MongoDB在其 3.6 版本中引入了变更流。
我想在我的代码中实现 mongo 更改流,并想了解它是如何工作的。我将使用 java 驱动程序来实现,这很清楚。但我想知道是否有任何方法可以在 mongo shell 中打开更改流?在这方面找不到太多资源。
mongodb - MongoDB 更改流仅显示选定的字段
我正在尝试了解 MongoDB 中的更改流。
我试图只显示更新文档的某些字段。
所以我做了:
这是工作。
现在我只想显示一些字段。
我试过:
或者
但它们都不起作用。
如何仅显示选定的字段?
java - Mongo Change Stream“无权执行命令”
这是问题所在。我有mongos
连接到远程的本地实例mongod
。远程数据库使用基本密码认证。我正在尝试使用简单的 Scala 应用程序为特定集合设置 ChangeStream 观察程序。实际代码如下所示:
它断线.fullDocument(FullDocument.UPDATE_LOOKUP)
告诉:
这很令人困惑,因为给定的用户凭据mongo shell
在 remote DB 和 local 上都有效mongos
。此外,我尝试在该应用程序中使用集合执行一些其他操作(如collection.count()
)并且它有效!当我尝试设置观察者时出现问题。
javascript - 如何在 mongoDB 中观看 changestream 并将更新发送到 ajax 调用?
我正在使用 MongoDB 3.6 watch()的新功能,以便将数据库更新从节点服务器发送到客户端的 ajax。
我创建了一个通过 ajax 调用定期查询的 web 服务。在两个连续的 ajax 调用之间,我希望第二个获取同时发生的所有更新。我知道我必须恢复更改流,如下面的官方文档所示:https ://docs.mongodb.com/manual/changeStreams/#resume-a-change-stream 。但是我没有找到如何将其应用于我的特定需求,我的意思是,我可以在哪个回调中处理我的数据并将其发送到 web 服务响应?
这是我的服务器端代码的一部分:server.js
网络服务部分:
这是控制台日志,正如我们所见,我处理数据的部分永远不会被调用:
mongodb - Mongo 变更流时间戳
在跟踪 oplog 时,我会看到每个事件的时间戳。与直接跟踪 oplog 相比,更改流具有优势,所以我想使用它们。但是,我找不到任何方法来确定何时发生更改。如果我的脚本停机一段时间然后使用恢复令牌恢复,这将是有问题的。
有没有办法得到那个时间戳?
mongodb - 如何使用 Spring Data Mongodb 监视 MongoDB 更改流中特定字段的更改
根据mongodb changestream的文档,我可以查看集合中特定字段的更新:
我想知道,如何用 spring data mongodb reactive 实现同样的事情。
当我用
我得到所有更新。这些更改事件之一的日志如下所示:
但是,当我将过滤器更改为
或者
我没有改变事件。所以这里有一个问题:我如何定义 Criteria 以匹配updatedField.b上的更新?
集合中的示例文档是:
第一个“工作”过滤器的示例可以在以下位置下载: 我的测试 github repo
java - 当 mongodb 更改流的恢复令牌已过时时,java 驱动程序的行为是什么?
在查看集合上的更改流时,我可以指定一个恢复令牌(使用 resumeAfter)来获取 opslog 中该令牌之后的更改。如果在 opslog 中找不到此令牌(例如,客户端断开连接时间过长并提供旧令牌),会发生什么情况?
特别是,异步 mongodb java 驱动程序会检测到这种情况吗?如何检测?
对我来说,这个问题很重要,因为我必须检测我是否丢失了连接并且必须再次提取所有数据,或者可以依靠更改流从集合中获取所有更改。
该文件指出,
只要 oplog 有足够的历史记录来定位应用程序收到的最后一个操作,更改流是可恢复的。
但没有具体说明,否则会发生什么。我还发现阅读驱动程序源代码来确定客户端如何检测是否可以在 opslog 中找到最后一个令牌相当困难。
c# - C# - 使用 $match 在 MongoDB 中更改流
我正在尝试将 MongoDB 中的更改流缩小到与文档的 _id 匹配的特定文档,因为我在一个集合中有许多文档。任何人都知道如何在C#中做到这一点?这是我尝试无济于事的最新消息:
如果我将光标更改为您在下面看到的内容,它会起作用,但是当文档中存在任何 _id 的活动时,它会返回世界并返回更改流。那不是我想要的。
mongodb-3.6 - Mongodb 3.6 changestream resumeToken 时间戳
我目前正在使用 MongoDB 3.6 的 changestream 功能
我们是一个繁重的更新/插入操作,我们使用 changestream 发送数据进行分析。我们需要实时同步数据,但由于 resumeToken 是二进制的,我很难找到操作的时间戳,因此无法计算分析的同步滞后。
有没有办法从 resumeToken 获取时间戳或任何其他方式来获取操作时间戳。