Node.js侦听MongoDB更改

Node.js侦听MongoDB更改,mongodb,node.js,watch,listen,Mongodb,Node.js,Watch,Listen,Node.js是否有办法监听MongoDB集合中特定数据的更改,并在发生更改时触发事件?MongoDB显然现在支持触发器和监视,这个答案已经过时了 [原创]我相信您正在寻找一家新的公司 不幸的是,MongoDB还不支持它们,所以我认为您不能直接从数据库中监听更改。您需要设置某种通知系统(如pub/sub),在收藏发生更改时向相关方发出通知。好吧,这是一个老问题,但我一直在努力解决同样的问题。我发现了许多帮助我制定解决方案的花边新闻,并将其作为一个库发布: 这个图书馆是用咖啡脚本写的。下面是一个

Node.js是否有办法监听MongoDB集合中特定数据的更改,并在发生更改时触发事件?

MongoDB显然现在支持触发器和监视,这个答案已经过时了

[原创]我相信您正在寻找一家新的公司


不幸的是,MongoDB还不支持它们,所以我认为您不能直接从数据库中监听更改。您需要设置某种通知系统(如pub/sub),在收藏发生更改时向相关方发出通知。

好吧,这是一个老问题,但我一直在努力解决同样的问题。我发现了许多帮助我制定解决方案的花边新闻,并将其作为一个库发布:

这个图书馆是用咖啡脚本写的。下面是一个javascript示例,供那些喜欢它的人使用

var MongoWatch = require('mongo-watch'),
    watcher = new MongoWatch({parser: 'pretty'});

watcher.watch('test.users', function(event) {
  return console.log('something changed:', event);
});
嗯,有点晚了。
但是,如果有人希望通知MongoDB对node.js的更改,那么他们可以使用这个库

这是一个活动库,很容易与nodejs集成。 它使用Mongo的可裁剪游标和封顶集合。
当文档插入MongoDB时,它以发布/订阅方式通知订阅者

查看详细信息。

引入了MongoDB 3.6,旨在精确解决此问题

下面是一个例子:


你从哪里写信给MongoDB商店?仅从node.js实例,还是从多个源?嗯。。mongo已连接到node.js,但用户可以直接在mongo中手动更改数据。(比如mongoHub)真的希望触发器可用。他们在上一次Mongosft讨论了它们MongoDB支持
.watch()
方法中有触发器。Stackoverflow需要一种方法来“不接受”您自己接受的答案,这样当情况发生变化时,更好的答案会浮到顶部…您可以分享更多关于
watcher.watch(…)
const pipeline = [
  {
    $project: { documentKey: false }
  }
];

const db = client.db("superheroesdb");
const collection = db.collection("superheroes");

const changeStream = collection.watch(pipeline);
// start listen to changes
changeStream.on("change", function (change) {
  console.log(change);
});