【发布时间】:2012-09-01 07:15:09
【问题描述】:
鉴于:连接是安全的=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 的时间复杂度比较是多少?
【问题讨论】:
-
你所说的“时间复杂度”是指与
$push相关的比较所花费的时间? -
是的。如果带有 $ne 的 $push 将遍历每个元素,我假设 $addToSet 也会这样做。两者中哪一个最适合使用?
-
$push 很容易,因为即使 $push 必须拉出数组(子文档),它也不必比较设置。
标签: mongodb