Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript mongodb changestream“;管道“;不起作用_Javascript_Node.js_Mongodb - Fatal编程技术网

Javascript 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); 及

我有一些代码可以监视mongodb集合的更新。。。我有它的设置,以便当任何人发送消息时,changestream将检测到。。。问题是,当我尝试添加管道时,不会检测到更新

以下是我尝试过的一些事情:

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"})