Meteor Upsert+Oplog跟踪

Meteor Upsert+Oplog跟踪,meteor,upsert,Meteor,Upsert,在流星1.1.0.2中,当我 Meteor.publish("Rows", -> return [] unless @userId Rows.find({userId: @userId}) ) Rows.update(selector, modifier) 。。。更改会立即发送到客户端耶!但是当我这么做的时候 Meteor.publish("Rows", -> return [] unless @userId Rows.find({userId: @userId}

在流星1.1.0.2中,当我

Meteor.publish("Rows", ->
  return [] unless @userId
  Rows.find({userId: @userId})
)
Rows.update(selector, modifier)
。。。更改会立即发送到客户端耶!但是当我这么做的时候

Meteor.publish("Rows", ->
  return [] unless @userId
  Rows.find({userId: @userId})
)
Rows.update(selector, modifier)
。。。这些更改会在一个小延迟后发送,大概是在轮询驱动程序接收它们之后


我是做错了什么,还是只是当前oplog跟踪驱动程序的一个限制?

太棒了!我的一位同事怀疑upsert通常不如update高效——我想他说它经常以执行删除和插入操作而告终。你能补充更多的信息吗?例如:你使用的是什么版本的Meteor?另外,你会包括更新和升级呼叫吗?@AdamMonsen我使用的是Meteor 1.1.0.2。事实上,问题与upsert性能无关,而是与有关upsert操作的Meteor oplog性能有关。我怀疑upsert本身的基准会有所帮助。然而,有趣的是:您也有同样的问题吗?upsert将在oplog中输入“update”或“insert”行。upsert中的“更新”条目与更新中的“更新”条目无法区分。您可以通过meteor mongo使用“本地”数据库并运行db.oplog.rs.find来查看oplog条目。轮询与观察oplog是由正在观察的光标决定的,而不是由用于修改db的命令决定的。@user728291,你完全正确。那么,为什么客户端只能在延迟后看到更改?