如何在mongodb中收听某些集合的文档中的更改

时间:2013-01-07 20:48:48

标签: node.js mongodb socket.io real-time-updates

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

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


我使用数组'onlineEmployees'来存储当前在线员工的用户名 我是mongoDB的新手....请在回答中提供一些细节。

1 个答案:

答案 0 :(得分:0)

this question中所述,观看oplog可能是您最好的选择。

如果您使用mongoskin,可以在this example from their 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