0

MongoDB 具有可配置的持久性:在执行更新操作时,您可以指定“写入关注点”来告诉系统您希望仅在数据(例如)已刷新到磁盘并复制到 X 从属服务器时才认为更新完成.

是否有任何关于不是当前更新的保证,而是之前的写入?如果我想更新三个文档,我是否必须在所有文档上标记昂贵的写入关注点,或者仅使用最后一个操作发布它就足够了?

此外,使用连接池(即通过三个不同的连接完成三个更新)和分片(即影响多个分片的三个更新)是否会影响这种推理?

4

1 回答 1

1

如果您对多个写入使用相同的连接,成功返回的带有 j、safe、fsync 标志的 getLastError 将表明在最后一个操作之前的先前操作已经被保存/复制到其他服务器。

但是,如果这些先前的操作由于任何原因失败,如果您不为每个操作调用 getLastError,您将不会知道它。但是,如果您的写入是从不同的连接发送的,则不能保证所有操作都保存到磁盘/复制到其他服务器。

于 2011-12-15T07:00:02.403 回答