【问题标题】:How to check if a collection has changed?如何检查集合是否已更改?
【发布时间】:2018-04-17 17:15:43
【问题描述】:

我使用 Express.js、Mongoose 和 MongoDB 创建了一个 JSON API。目前,API 的客户端无法检查集合中的数据是否已更改 - 他们需要定期下载整个集合。

如何允许 API 的客户端在不下载集合本身的情况下检查对集合的更改(插入、更新、删除)?

有没有办法使用 Mongoose 获取集合的版本号、上次更改时间戳或集合的哈希?这个问题的最佳实践解决方案是什么?

【问题讨论】:

    标签: mongodb express mongoose


    【解决方案1】:

    在当前和早期版本的 MongoDB 中,您必须在应用程序端执行此操作,可能使用轮询。

    MongoDB 3.6 有一个名为change stream 的全新功能,可让您实时监听集合中发生的变化。

    监听您的收藏中发生的选定更改的示例代码如下:

    var MongoClient = require('mongodb').MongoClient
    , assert = require('assert');
    MongoClient.connect("mongodb://172.16.0.110:27017/myproject?readConcern=majority").then(function(client){
      var db = client.db('myproject')
      var changeStreams =  db.collection('documents').watch()
      changeStreams.on('change', function(change){
        console.log(change)  
      })
    
    })
    

    如果您使用的是 node.js,则需要使用以下 node 模块才能使其正常工作:

    "dependencies": {
        "mongodb": "mongodb/node-mongodb-native#3.0.0"
      }
    

    【讨论】:

      猜你喜欢
      • 2010-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多