mongodb changestream“管道”不起作用

时间:2019-12-23 00:24:41

标签: javascript node.js mongodb

我有一些代码可以监视mongodb集合的更新...我已对其进行设置,以便当任何人发送消息时,changestream会检测到...问题是,当我尝试添加管道时,没有检测到更新...

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

const pipeline = [
{ $match: { 'fullDocument.username_pair': 'HardCodedUsernameInDatabase' }}
];
changeStream = message_collection.watch(pipeline);

const pipeline = [
{ $match: { username_pair: 'HardCodedUsernameInDatabase' }}
];
changeStream = message_collection.watch(pipeline);

再次,该代码将在没有任何管道的情况下检测所有消息,即:

changeStream = message_collection.watch();

...

更新:

之所以棘手,是因为我正在收听的文档看起来像这样:

_id:some_id

username_pair:"Test1234test1111"

messages:Array

username_pair从不更新,messages数组是更新的内容……我需要查看与username_pair匹配的文档,并且我需要检测与username_pair对应的message数组中的更改。

1 个答案:

答案 0 :(得分:0)

我猜想,诀窍是在集合上打开更改流时添加名为fullDocument的选项。看到这里

someCollection.watch([{
  "$match": {
    "operationType": {
       "$in": ["update"]
     },
     "fullDocument.username_pair": "HardCodedUsernameInDatabase"
  }
}], {"fullDocument": "updateLookup"})

希望这会有所帮助