gpt4 book ai didi

mongodb - 数组中不存在元素时 $addToset 与 $push 的时间复杂度

转载 作者:IT老高 更新时间:2023-10-28 13:14:55 26 4
gpt4 key购买 nike

鉴于:连接是安全的=True,因此更新的返回将包含更新信息。

假设我有一个看起来像这样的文档:

[{'a': [1]}, {'a': [2]}, {'a': [1,2]}]

我发出:

coll.update({}, {'$addToSet': {'a':1}}, multi=True)

结果是:

{u'connectionId': 28,
u'err': None,
u'n': 3,
u'ok': 1.0,
u'updatedExisting': True
}

即使来的文档已经具有该值。为了避免这种情况,我可以发出一个命令。

coll.update({'a': {'$ne': 1}}, {'$push': {'a':1}}, multi=True)

$addToSet 与带有 $ne 检查的 $push 的时间复杂度比较是多少?

最佳答案

看起来 $addToSet 与您的命令执行相同的操作:$push 和 $ne 检查。两者都是 O(N)

https://github.com/mongodb/mongo/blob/master/src/mongo/db/ops/update_internal.cpp

如果速度真的很重要,那么为什么不使用哈希:

代替:

{'$addToSet': {'a':1}}
{'$addToSet': {'a':10}}

使用:

{$set: {'a.1': 1}
{$set: {'a.10': 1}

关于mongodb - 数组中不存在元素时 $addToset 与 $push 的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12225748/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com