【发布时间】:2021-04-25 16:59:09
【问题描述】:
我的 MongoDB 集合包含大约 1000 万个文档
我尝试更新(upsert)大约 2500~ 个文档,每次更新大约 1K
我尝试将 bulkWrite 与 order=false 一起使用。 大约需要 10 秒,每个文档大约需要 3-4 毫秒。
所以我尝试通过 updateOne 插入 2500~ 个文档(迭代模式) 我测量了每个文档的平均时间,每次更新大约需要 3.5 毫秒。
为什么我的 bulkWrite 没有得到更好的结果,我该如何改进 bulkWrite 的更新时间?
带有 1 个文档的 bulkUpdate 示例:
db.collections.bulkWrite( [
{ updateOne :
{
"filter": {"Name": "someName", "Namespace" :
"someNs", "Node" : "someNode" , "Date" : 0},
"update": {"$addToSet" : {"Data" :{"$each" : ["1", , "2"]}}},
"upsert": true
}
}
] )
文档示例:
{
"Name": "someName",
"Namespace": "someNs",
"Node": "SomeNode",
"Date": 23245,
"Data" : ["a", "b"]
}
我有一个复合索引,其中包含:名称、命名空间、节点、日期。
当我尝试查找文档时,我得到了很好的结果
【问题讨论】:
-
一般来说,更新查询可以从查询过滤字段上的索引中受益(在性能方面)。它可以是单个字段或复合索引。
标签: mongodb mongodb-query