Javascript mongodb changestream“;管道“;不起作用
我有一些代码可以监视mongodb集合的更新。。。我有它的设置,以便当任何人发送消息时,changestream将检测到。。。问题是,当我尝试添加管道时,不会检测到更新 以下是我尝试过的一些事情:Javascript mongodb changestream“;管道“;不起作用,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我有一些代码可以监视mongodb集合的更新。。。我有它的设置,以便当任何人发送消息时,changestream将检测到。。。问题是,当我尝试添加管道时,不会检测到更新 以下是我尝试过的一些事情: const pipeline = [ { $match: { 'fullDocument.username_pair': 'HardCodedUsernameInDatabase' }} ]; changeStream = message_collection.watch(pipeline); 及
const pipeline = [
{ $match: { 'fullDocument.username_pair': 'HardCodedUsernameInDatabase' }}
];
changeStream = message_collection.watch(pipeline);
及
同样,代码将在没有任何管道的情况下检测所有消息,即:
changeStream = message_collection.watch();
更新:
这很棘手的原因是因为我正在听的文档如下所示:
_id:some_id
username_pair:"Test1234test1111"
messages:Array
用户名对从不更新,消息数组是更新的内容。。。我需要查看与用户名对匹配的文档,并且需要检测与用户名对对应的消息数组中的更改。我想诀窍是在打开集合的更改流时添加名为
fullDocument
的选项。看这里
someCollection.watch([{
"$match": {
"operationType": {
"$in": ["update"]
},
"fullDocument.username_pair": "HardCodedUsernameInDatabase"
}
}], {"fullDocument": "updateLookup"})
希望这有帮助您能显示未被检测到的文档吗?@mickl我已经更新了帖子,添加了示例文档和更多信息。谢谢,我更新了我的帖子,更加具体。。。我相信您建议的解决方案是查看username\u pair字段进行更改。我的缺点是不具体enough@TylerHough更新了我的答案。请看看这是否是你要找的。
someCollection.watch([{
"$match": {
"operationType": {
"$in": ["update"]
},
"fullDocument.username_pair": "HardCodedUsernameInDatabase"
}
}], {"fullDocument": "updateLookup"})