- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想知道它是否更快(导入)使用 updateone
或 updatemany
使用批量写入。我使用 pymongo 外观将数据导入集合的代码是这样的:
for file in sorted_files:
df = process_file(file)
for row, item in df.iterrows():
data_dict = item.to_dict()
bulk_request.append(UpdateOne(
{"nsamples": {"$lt": 12}},
{
"$push": {"samples": data_dict},
"$inc": {"nsamples": 1}
},
upsert=True
))
result = mycol1.bulk_write(bulk_request)
当我尝试更新很多时,我唯一改变的是:
...
...
bulk_request.append(UpdateMany(..
..
..
我没有看到插入时间有任何重大差异。updateMany 应该更快吗?
最佳答案
@Wernfried Domscheit's答案是正确的。
此答案特定于您的场景。
如果您不介意不将记录更新到现有文档并完全插入新文档,请使用以下最适合您的用例的代码。
sorted_files = []
process_file = None
for file in sorted_files:
df = process_file(file)
sample_data = []
for row, item in df.iterrows():
sample_data.append(item.to_dict())
if len(sample_data) == 12:
mycol1.insertOne({
"samples": sample_data,
"nsamples": len(sample_data),
})
sample_data = []
mycol1.insertOne({
"samples": sample_data,
"nsamples": len(sample_data),
})
如果您想用 12 个对象填充现有记录,然后,
Note: I have not tested the code in my local, its just to understand the flow for you to use.
for file in sorted_files:
df = process_file(file)
sample_data = []
continuity_flag = False
for row, item in df.iterrows():
sample_data.append(item.to_dict())
if not continuity_flag:
sample_rec = mycol1.find_one({"nsamples": {"$lt": 12}}, {"nsamples": 1})
if sample_rec is None:
continuity_flag = True
elif sample_rec["nsamples"] + len(sample_data) == 12:
mycol1.update_one({
"_id": sample_rec["_id"]
}, {
"$push": {"samples": {"$each": sample_data}},
"$inc": {"nsamples": len(sample_data)}
})
if len(sample_data) == 12:
mycol1.insert_one({
"samples": sample_data,
"nsamples": len(sample_data),
})
sample_data = []
if sample_data:
mycol1.insert_one({
"samples": sample_data,
"nsamples": len(sample_data),
})
关于python - Mongodb 批量写入 Updateone 或 Updatemany,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67483255/
我正在尝试更新现有的 Mongo 记录,但收到“附加信息:元素名称‘ID’无效’。”错误 我有一个 BsonDocument“文档”,其中包含我从另一个来源检索的数据,如下所示: { "ID" : "
好吧,所以我整晚都在修补这个,我必须 sleep 所以我在这里问。为什么 updateOne 在应该更新数据时却删除了我的数据? DB.collection('users').updateOne({"
This post也有我的问题,但没有人回答。我在 mongodb 中有一个模型,其中有一些字段,其中一个名为 synced ,这是一个 bool 字段。使用下面的代码,我想更新一个(或多个小改动)文
我编写了以下程序,通过删除最低成绩来更新一组记录。根据程序的输出,UpdateResult.matchedCount=1,但UpdateResult.ModifiedCount=0。本质上,查询是查找
我有一个 MongoDAO 类,它具有以下用于基本 Mongo CRUD 操作的代码。我使用 collection.updateOne 方法的代码行未编译并抛出错误“MongoCollection 类
看下面的例子 我只想更新 ExpensesHouse 中的一条记录,因此我构建了以下代码 router.post("/editExpense/:id", ensureAuthenticated, (r
是否可以使用 OrmLite 扩展方法 仅更新 一次更新多个字段? 文档中给出的示例是: db.UpdateOnly(new Person { FirstName = "JJ" }, p => p.F
运行此查询时: const project = await models.Projects .updateOne( { _id: projectId }, {
在我的 good'ol grails (3.1.x) 应用程序中,我有类似的行 ModuleState.collection.updateOne( [ compositeKey:ck ],
我有一个对象 User,其属性为 LastLoggedIn,以下是我为更新此字段而编写的代码: using (var o = Conn.OpenDbConnection()) { var on
是否可以获取所有更新的值/调用 updateOne() 后存在差异的值 _.each(gameResult, function(gameResult){ bulk.find({"user"
很抱歉问了这个非常基本的问题,但我真的希望这段代码能够工作。 在node.js中,我使用.updateOne()函数成功更新了我的mongo数据库,并将参数保留为空白,如下所示。我认为它会更新集合中最
我的 Angular 应用程序使用在服务器端执行的复杂验证。出于这个原因,我配置了仅在 blur 事件上触发更新和验证: this.form = new FormGroup( { ... },
我正在尝试从 go 更新 MongoDB 的文档。 ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) d
我有以下 reducer : case ProductionCommentActionTypes.EditCommentSuccess: { return adapter.updateOne(ac
我有一个响应式表单组,它与 updateOn submit 和 updateOn change 配合得很好。 但是当我切换到 updateOn blur 时,在我的自定义表单控件中输入字符后会直接触发
我正在尝试使用“updateOne”方法删除数组项,但我的查询与我拥有的模型结构中的正确记录不匹配。给定一封电子邮件,我想找到包含所提供电子邮件的数组项并将其拉出,将其删除。 (不存在具有相同电子邮件
我想知道它是否更快(导入)使用 updateone或 updatemany使用批量写入。我使用 pymongo 外观将数据导入集合的代码是这样的: for file in sorted_files:
我有一个自定义的异步验证器,我想设置 updateOn: 'blur'属性使用 FormBuilder : myForm = this.formBuilder.group({ email: ['
有什么方法可以在使用 ngModelOptions 时触发验证吗?我的用例是有一个表单,其中所有字段在提交时更新 ngModel(因为我想在用户单击“取消”按钮时恢复整个表单)。有了这个,我无法立即验
我是一名优秀的程序员,十分优秀!