在pymongo中设置写入关注级别为无确认

10 投票
1 回答
6929 浏览
提问于 2025-04-18 18:48

我有一个很大的mongodb数据库,因为在任何时候只有一个线程在往某个集合里写东西,而且所有的更新都是针对已经存在的文档,所以我希望mongodb在操作时不确认任何操作,这样可以提高性能。

我看到了一些关于写入确认的介绍,这里有详细说明,但我不知道如何在pymongo中使用不确认的写入方式来进行更新。

注意:我使用的是pymongo 2.7.1,python 3.4和mongo 2.6.3。

编辑:我想添加一下关于修改写入确认的批量更新版本,参考Neil Lunn的解决方案。

1 个回答

17

你可以在两个地方进行这个操作。

  1. 第一种是在获取初始的 MongoClient 时:

    client = MongoClient(w=0)
    
  2. 第二种是在发出命令时作为一个额外的参数:

    result = db.collection.update({ 'a': 1 }, { 'a': 2 }, w=0 )
    

这两个地方都可以设置写入关注度。你在 MongoClient 上设置的写入关注度是“全局”的,适用于整个连接,而在其他地方设置的则会覆盖这个全局设置,或者如果没有特别指定,就会使用“全局”的设置。

撰写回答