1

我知道我们可以使用 Mongo shell 来启用(或禁用)Amazon Document DB 的更改流。是否可以从 AWS 控制台或 MongoDB 驱动程序启用更改流?

4

2 回答 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 回答