我知道我们可以使用 Mongo shell 来启用(或禁用)Amazon Document DB 的更改流。是否可以从 AWS 控制台或 MongoDB 驱动程序启用更改流?
问问题
980 次
2 回答
1
AWS 控制台:不。我认为这不是由 DocumentDB 集群参数控制的。
MongoDB 驱动程序:是的
DocumentDB Change Streams 使用runCommand方法来启用和禁用更改流。在文档中,使用的命令adminCommand
只是调用runCommand
数据库admin
。由于几乎所有驱动程序都支持在数据库上运行命令,因此您应该能够使用任何驱动程序启用/禁用更改流。
以下代码使用 pymongo 启用变更流:
>>> from pymongo import MongoClient
>>> client = MongoClient("mongodb://<username>:<password>@xxxxxx.xxxxxx.us-east-1.docdb.amazonaws.com:27017/test_db?ssl=true&ssl_ca_certs=rds-combined-ca-bundle.pem&replicaSet=rs0&readPreference=secondaryPreferred")
>>> client['admin'].command('aggregate', 1, pipeline=[{'$listChangeStreams': 1}], cursor={})
{'waitedMS': 0, 'cursor': {'firstBatch': [], 'id': 0, 'ns': 'admin.$cmd'}, 'ok': 1.0}
>>> client['admin'].command('modifyChangeStreams', 1, database='bar', collection='foo', enable=True)
{'ok': 1.0}
>>> client['admin'].command('aggregate', 1, pipeline=[{'$listChangeStreams': 1}], cursor={})
{'waitedMS': 0, 'cursor': {'firstBatch': [{'database': 'bar', 'collection': 'foo'}], 'id': 0, 'ns': 'admin.$cmd'}, 'ok': 1.0}
于 2020-10-21T11:26:47.050 回答
1
您可以使用 modifyChangeStream API 在您的 Amazon DocumentDB 集群上启用变更流。使用 mongo shell 启用/禁用变更流 -
//Enable change streams for the collection "foo" in database "bar"
db.adminCommand({modifyChangeStreams: 1,
database: "bar",
collection: "foo",
enable: true});
//Enable change streams for all collections in database "bar"
db.adminCommand({modifyChangeStreams: 1,
database: "bar",
collection: "",
enable: true});
//Enable change streams for all collections in all databases in a cluster
db.adminCommand({modifyChangeStreams: 1,
database: "",
collection: "",
enable: true});
要从您的应用程序启用更改流,您可以使用@krg265 的建议。
于 2020-10-21T17:12:24.273 回答