mongodb - 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 更改流仅适用于version 3.6
您也应该运行您的 mongodreplica set
并使用wiredtiger
存储引擎来利用此功能。
来自 MongoDB 官方文档。
3.6 版中的新功能。
更改流允许应用程序访问实时数据更改,而不会拖尾 oplog 的复杂性和风险。应用程序可以使用更改流来订阅单个集合、数据库或整个部署上的所有数据更改,并立即对其做出反应。由于变更流使用聚合框架,因此应用程序还可以过滤特定变更或随意转换通知。
更改流可用于使用 WiredTiger 存储引擎和副本集协议版本 1 (pv1) 的副本集和分片集群。更改流也可用于使用 MongoDB 的静态加密功能的部署。
推荐阅读
- python - 如何根据与数据框中另一列的相关性删除多列?
- python - Pandas 使用正则表达式替换
- javascript - Javascript内容多个滑块同一页面
- ios - 颤振构建xcode11.3失败
- linux - 当客户端尝试对其执行 ssh -Y 时更改服务器生成的 .Xauthority 文件路径
- amazon-web-services - 从 Yii 应用程序上传 Aws s3 存储桶(私有存储桶)上的文件,并为用户提供文件访问权限
- aws-lambda - 使用 AWS CodeBuild 构建的 AWS Lambda 中的 cx_Oracle 问题
- r - 当前可视化中的 Cel 着色/alpha 形状
- javascript - 如何在箭头函数中使用 Typescript 泛型添加两个参数
- php - Laravel 在字段验证后插入记录