gpt4 book ai didi

mongodb - 你能在 Mongo 中为 $addToSet 指定一个键吗?

转载 作者:太空宇宙 更新时间:2023-11-04 01:30:18 25 4
gpt4 key购买 nike

我有一个文档:

{ 'profile_set' :
[
{ 'name' : 'nick', 'options' : 0 },
{ 'name' : 'joe', 'options' : 2 },
{ 'name' : 'burt', 'options' : 1 }
]
}

并且希望将新文档添加到 profile_set 集中(如果该名称尚不存在)(无论选项如何)。

因此,在这个示例中,如果我尝试添加:

{'名称':'马特','选项':0}

应该添加它,但是添加

{'名称':'昵称','选项':2}

不应该执行任何操作,因为即使选项不同,名称为nick的文档已经存在。

Mongo 似乎与整个元素匹配,我最终检查它是否相同,最后得到

profile_set containing [{'name' : 'nick', 'options' : 0}, {'name' : 'nick', 'options' : 2}]

有没有办法用 $addToSet 来做到这一点,还是我必须推送另一个命令?

最佳答案

您可以使用查询对象限定您的更新,如果名称已存在于profile_set中,该查询对象会阻止更新。在外壳中:

db.coll.update(
{_id: id, 'profile_set.name': {$ne: 'nick'}},
{$push: {profile_set: {'name': 'nick', 'options': 2}}})

因此,这只会对具有匹配 _id 且不存在 profile_set 元素的文档执行 $push,其中 名称“昵称”

关于mongodb - 你能在 Mongo 中为 $addToSet 指定一个键吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56336891/

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