我有一些代码可以监视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数组中的更改。
答案 0 :(得分:0)
我猜想,诀窍是在集合上打开更改流时添加名为fullDocument
的选项。看到这里
someCollection.watch([{
"$match": {
"operationType": {
"$in": ["update"]
},
"fullDocument.username_pair": "HardCodedUsernameInDatabase"
}
}], {"fullDocument": "updateLookup"})
希望这会有所帮助