Javascript MongoDB地图册,带“地图”;“完整文件”;启用仅返回更改的项目,而不是完整文档
我正在尝试使用MongoDB Atlas的触发器来通知我收藏中文档的更改。我希望接收其中有任何数据更改的完整文档,并在收到更改通知后使用该完整文档。在触发器配置中,有一个用于启用/禁用“完整文档”的滑块,其描述如下: 打开“完整文档”后,您将收到创建的文档或 在您的更改事件中修改。对于删除操作,完整的 文档将不存在 但是,无论是否启用该滑块,我都会得到相同的结果 以下是我的更改侦听器代码:Javascript MongoDB地图册,带“地图”;“完整文件”;启用仅返回更改的项目,而不是完整文档,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我正在尝试使用MongoDB Atlas的触发器来通知我收藏中文档的更改。我希望接收其中有任何数据更改的完整文档,并在收到更改通知后使用该完整文档。在触发器配置中,有一个用于启用/禁用“完整文档”的滑块,其描述如下: 打开“完整文档”后,您将收到创建的文档或 在您的更改事件中修改。对于删除操作,完整的 文档将不存在 但是,无论是否启用该滑块,我都会得到相同的结果 以下是我的更改侦听器代码: const client = new MongoClient(uri, { useNewUrlParser
const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true })
await client.connect().then(db => {
const collection = client.db("database_name").collection("collection_name")
const changeStream = collection.watch()
changeStream.on("change", async data => {
console.log("Detected database change on", Date())
console.log(data) // only returns changed data
})
})
以下是示例输出,如上所述,尽管触发器配置不同,但它不包括完整文档:
{
_id: {
_data: '82606C926E000000012B022C0100296E5A10049008F3458DF14719A9225DF7AB403CEC46645F69640064606C76124670930F9A1F657C0004'
},
operationType: 'update',
clusterTime: Timestamp { _bsontype: 'Timestamp', low_: 1, high_: 1617728110 },
ns: { db: 'database_name', coll: 'collection_name' },
documentKey: { _id: 606c76124670930f9a1f657c },
updateDescription: {
updatedFields: {
my_data: 'my changed data',
created: 1617728109618
},
removedFields: []
}
}
完整文档应如下所示:
{
_id: 606c76124670930f9a1f657c,
myKey: 'something that never changed',
my_data: 'my changed data',
created: 1617728109618,
expires: 'some time in seconds that never changed',
other_info: 'something that never changed'
}
任何帮助都将不胜感激。。。e、 g.是否需要在触发器配置中添加函数以返回完整文档?如果是这样的话,这样的函数会是什么样子?我通常不喜欢回答自己的问题,但我想我还是会把答案贴在这里,以备其他人需要 在进一步挖掘之后,它看起来像是
collection.watch()
可以接受选项。在Atlas中启用完整文档后,我的代码需要:
const changeStream = collection.watch([], { fullDocument: 'updateLookup' })
现在,完整文档按预期返回。我找到的文档来自和。触发器和更改流之间有什么联系?