首页 > 解决方案 > MongoDB 监视管道

问题描述

我试图在监视管道的帮助下收听更改,但没有输出。即使当我单击前端的按钮时,MongoDB atlas 中的值也会发生变化,但它不会显示在 Node.Js 中。Node.js 与 MongoDB 有完美的连接。您可以在下面找到我使用的代码。

  const pipeline = [
     { 
         $match : { 
             $and: [
                {serialNumber : "917211212a"},
                {typeDevice: "Light"}
             ]
            }
        },
        {
            $project:{
                _id:0,
                name: 1,
                state: 1,
                startTime:1,
                finishTime:1
            }
        }
          ];


mongoConnect(() => {
const db = getDb();
var collection = db.collection('devices');

const changeStream = collection.watch(pipeline);


changeStream.on('change',function(event) {

console.log(JSON.stringify(event));
}
)}

标签: mongodb

解决方案


MongoDB 更改流仅适用于version 3.6您也应该运行您的 mongodreplica set并使用wiredtiger存储引擎来利用此功能。

来自 MongoDB 官方文档。

3.6 版中的新功能。

更改流允许应用程序访问实时数据更改,而不会拖尾 oplog 的复杂性和风险。应用程序可以使用更改流来订阅单个集合、数据库或整个部署上的所有数据更改,并立即对其做出反应。由于变更流使用聚合框架,因此应用程序还可以过滤特定变更或随意转换通知。

更改流可用于使用 WiredTiger 存储引擎和副本集协议版本 1 (pv1) 的副本集和分片集群。更改流也可用于使用 MongoDB 的静态加密功能的部署。


推荐阅读