如何在MongoDB中聆听某些集合的文档中的更改

我正在使用socket.io进行服务器和客户端之间的实时通信,所以我想要听取特定文档中的更改以将在线列表更新到客户端
这是我收集的Schema:

var registerCompanySchema = new Schema({ sn : { type: Number, unique:true } , companyName: String , employees:[String], companyId:{type:Number,unique:true}, onlineEmployees:[String] //uname }); 

我正在使用“onlineEmployees”数组来存储当前在线的员工的用户名
我是mongoDB的新手….请提供一些详细的答案。

看这个oplog可能是你最好的select,正如在这个问题中提到的那样。

  • 在MongoDB中获取已更改文档的通知
  • 复制内部 – 在oplog上包含一些细节

如果你使用的是mongoskin你可以在他们的wiki上试试这个例子 :

 skin = require "mongoskin" db = skin.db "localhost:27017/local" #Cursor on oplog (a capped collection) which maintains a history for replication #oplog can be used only when replication is enabled # Use oplog.rs instead of oplog.$main if you are using replica set oplog = db.collection "oplog.$main" cursor = oplog.find({'ns': "icanvc.projects"},{tailable: yes, awaitData: yes}) #Using cursor.nextObject will be slow cursor.each (err, log)-> console.error err if err console.log log if not err