相关疑难解决方法(0)

什么是MongoDB批量操作最大尺寸?

根据MongoDB 文档:

批量操作规模

批量操作最多可以有1000次操作.

但是,使用Mongo 2.6批量操作API和node-mongodb-native(collection.initializeUnorderedBulkOp()等),我能够使用大得多的操作数(大约300k操作)

这个限制是否已过时,或者我只是遗漏了什么?你知道什么是真正的限制吗?

mongodb

11
推荐指数
2
解决办法
8280
查看次数

在MongoDB中批量更新/ upsert?

可以在MongoDB中进行批量更新/ upsert(不插入)吗?

如果是,请指出任何与此相关的文档?

谢谢

batch-file upsert bulk mongodb nosql

10
推荐指数
1
解决办法
2万
查看次数

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
查看次数

Pymongo:insert_many +唯一索引

我想insert_many()在我的收藏中提供文件.其中一些可能screen_name与集合中的现有文档具有相同的键/值对(在我的示例中).我在此密钥上设置了唯一的索引,因此出现错误.

my_collection.create_index("screen_name", unique = True)

my_collection.insert_one({"screen_name":"user1", "foobar":"lalala"})
# no problem

to_insert = [
    {"screen_name":"user1", "foobar":"foo"}, 
    {"screen_name":"user2", "foobar":"bar"}
]
my_collection.insert_many(to_insert)

# error : 
# File "C:\Program Files\Python\Anaconda3\lib\site-packages\pymongo\bulk.py", line 331, in execute_command 
# raise BulkWriteError(full_result)
# 
# BulkWriteError: batch op errors occurred
Run Code Online (Sandbox Code Playgroud)

我想 :

  1. 没有错误
  2. 不更改现有文件(此处{"screen_name":"user1", "foobar":"lalala"})
  3. 插入所有尚未存在的文档(此处{"screen_name":"user2", "foobar":"bar"})

编辑:正如有人在评论中所说的那样"这个问题是询问如何进行批量插入并忽略唯一索引错误,同时仍然插入成功的记录.因此,如何批量插入问题并不重复".请重新打开它.

mongodb pymongo python-3.x mongodb-query

4
推荐指数
1
解决办法
4565
查看次数