问题标签 [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.

0 投票
1 回答
212 浏览

python - 使用 MongoDB 更改流时代码不运行

我一直在构建一个 Discord 机器人,它会在数据库发生变化时向服务器中的选定通道发送消息,特别是在插入新文档时。我使用 MongoDB 作为数据库,我开始了解 pymongo 中的 collection.watch()。我在 db.py 中编写了 watch() 的代码,如 pymongo 文档中给出的那样。这里的“hackathons”是应用 watch 方法的集合。

我在另一个文件中调用了 new_hackathon() 函数。

对 new_hackathon() 函数的调用不会让 cog 加载,因此机器人没有给出响应。如果未调用该函数,则机器人可以完美运行。

0 投票
1 回答
397 浏览

c# - 集合重命名后,MongoDb 更改流未恢复

根据mongodb 文档

在无效事件(例如,集合删除或重命名)关闭流后,您不能使用 resumeAfter 来恢复更改流。从 MongoDB 4.2 开始,您可以使用 startAfter 在无效事件之后启动新的更改流。

我使用此代码在集合重命名后恢复更改流:

但是当我尝试恢复更改流(我将恢复令牌传递到StartAfter)时,它会立即退出。我的代码有什么问题?

  • db.version()-4.4.0
  • MongoDB.Driver-2.11.1
0 投票
1 回答
86 浏览

mongodb - pymongo:不能使用存储在 Redis 中的恢复令牌

我正在尝试使用 pymongo 来监听更改流,同时对故障/重启有弹性。因此,我将恢复令牌存储在 Redis 中以供以后重用。

这是我尝试过的代码

第一次运行时,打印了一个更改,我得到了一些存储在 Redis 中的内容。

但是如果我重新运行,我收到以下错误:

pymongo.errors.OperationFailure: The resume token UUID does not exist. Has the collection been dropped?

我正在使用 MongoDB 3.6.1 和 pymongo 3.7.1-1.1。

任何人都知道为什么我的简历令牌被拒绝?

0 投票
1 回答
351 浏览

node.js - MongoDB 更改流非常慢

从 MongoDB 中发生操作到我在 NodeJS 的更改流中捕获它,我遇到了 5 到 10 秒的延迟。

这些时间是否正常,我可以检查哪些参数以查看是否有影响?

这里有几个例子和一些怀疑(待测试)。

这里我们尝试只捕获我们感兴趣的Users集合的字段中的更改,我不知道这样做是否会避免不需要的事件可能会导致ChangeStream的接收延迟并且接收更多事件和过滤器会很方便在代码中更新的字段。

我不知道,如果操作类型的“和”必须放在前面,或者它是不相关的,我也不知道。

在另一个等待计划集合上的事件中,我担心它没有定义聚合,并且在接收到事件时,如果操作到达类型“插入”、“更新”、“删除”,它会被过滤. 这给了我们 7~10 秒的延迟。

在任何情况下都不是海量操作,通常是用户通过 Web 表单执行的操作。

0 投票
0 回答
137 浏览

mongodb - MongoDb 游标已关闭。db 宕机后不恢复

在我们的应用程序中有数百万个游标关闭异常。 光标已关闭;嵌套异常是 com.mongodb.MongoException: Cursor has been closed

当数据库服务器关闭并且该游标永远无法恢复然后转发时,就会发生这种情况。

在此处输入图像描述

Mongo java驱动版本是3.8.2

Spring mongo 版本是 2.0.6.RELEASE。

我们已经在我们的应用程序中注册了 MessageListener<ChangeStreamDocument, T>。

以下是我们拥有的 mongo 客户端属性:

在此处输入图像描述

在此处输入图像描述

不确定上述问题的原因是什么。同时不确定是否有一些属性需要调整以防止这种情况。

下面是堆栈跟踪:

0 投票
1 回答
140 浏览

mongodb - 如何使用 pymongo 监视数据库中所有集合的更改

我正在尝试观察 MongoDB 数据库中所有集合的实时变化。我在 https://pymongo.readthedocs.io/en/stable/api/pymongo/database.html#pymongo.database.Database.watch关注 pymongo 文档,但它似乎只适用于单个集合而不是整个数据库:

但我收到以下错误:

当我将其更改为它时,db.myCollectionName.watch()...它正在工作。我究竟做错了什么?我尝试使用循环遍历所有集合并监视每个集合,但这只监视数据库中的第一个集合而不是整个范围for collection in collections:

0 投票
1 回答
113 浏览

node.js - 在 NodeJs 中更改流以进行弹性搜索

目的是同步弹性搜索上某些集合的字段。随着对 mongodb 的每一次更改,这也应该在 elasticsearch 上实现。我看过不同的包裹。例如河。不幸的是,它对我不起作用,所以我尝试不使用它。这是变更流的正确方法吗?

你怎么能更漂亮地解决这个问题?数据必须与 Elasticsearch 上的每个更改(插入、更新、删除)同步。对于多个集合,但每个集合都不同(每个集合只有某些字段)。不幸的是,我没有经验来解决这个问题,如果添加或删除集合或字段不会花费太多精力

我希望你能帮助我,提前谢谢:)

0 投票
1 回答
96 浏览

node.js - 使用更改流(Node.js)获取文档中嵌套数组元素的增量

我有一个文档,其中有一个名为电话的数组字段,它可以有多个扩展数组对象,其中可以有多个对象。所以它是一个数组中的一个数组。我正在使用 changeStream 收听数据库。如果我更改电话[0].extension[0].valueBoolean = true where phone[0].extension[0].url == "https//google.com",我会在 change.updateDescription 中获得整个电话阵列.updatedFields不仅仅是电话[0] .extension [0]

更新字段

这是我到目前为止所拥有的

如何查看嵌套数组中的哪些确切元素随 changeStream 发生了变化?

0 投票
0 回答
57 浏览

mongodb - Reactive MongoDB Changestream 顺序处理

我正在尝试使用响应式编程处理来自 Mongodb 的变更流。下面是代码片段。它是按顺序处理每个文档的正确方法吗?

0 投票
0 回答
102 浏览

php - BSON 字段“$changeStream.startAfter”是未知字段

使用 mongo-php-library ,https://github.com/mongodb/mongo-php-library 这是php文件的内容:

我已经搜索但找到了任何与之相关的解决方案。是什么原因?