小编Kev*_*vad的帖子

如何在Linux上默默安装anaconda/miniconda

如何在Linux命令行上没有提示的情况下安装anaconda/miniconda?

有没有办法通过-y一种选项来同意T&C,建议的安装位置等默认情况下?

linux anaconda miniconda

18
推荐指数
1
解决办法
3722
查看次数

insert_many with upsert - PyMongo

我有一些这样的数据:

data = [{'_id': 1, 'val': 5},
        {'_id': 2, 'val': 1}}]
Run Code Online (Sandbox Code Playgroud)

db中的当前数据:

>>> db.collection.find_one()
    {'_id': 1, 'val': 3}
Run Code Online (Sandbox Code Playgroud)

总是收到唯一的行但不确定它们中是否存在任何行(例如上面的情况).我想根据两种类型的要求更新它们.

要求1:

千万不要,如果更新的行_id已经存在.这在某种程度上很容易:

from pymongo.errors import BulkWriteError
try:
  db.collection.insert_many(data, unordered=False)
except BulkWriteError:
  pass
Run Code Online (Sandbox Code Playgroud)

执行上面的操作会插入2nd行,但不会更新第一行; 但它也提出了例外.

1.有没有更好的方法进行上述操作(批量插入)?

要求2

这类似于update_if_existsinsert if not exists组合.所以以下数据:

data2 = [{'_id': 1, 'val': 9},
         {'_id': 3, 'val': 4}}]
Run Code Online (Sandbox Code Playgroud)

应该用行更新行_id=12nd在DB中插入行.

问题是我一次得到数千行,并且不确定逐个检查和更新是否有效.

2. MongoDB中是否可以在不迭代每行并且操作尽可能少的情况下满足此要求?

mongodb pymongo pymongo-3.x

6
推荐指数
1
解决办法
1308
查看次数

标签 统计

anaconda ×1

linux ×1

miniconda ×1

mongodb ×1

pymongo ×1

pymongo-3.x ×1