mongodb - $addToSet如何指定字段来作为是否存在的检查字段
ringa_lee
ringa_lee 2017-05-02 09:25:30
[MongoDB讨论组]

有个文档,它的一个属性,是一个文档数组,我想往数组里面添加一个文档,如果存在,则不添加,这里的判断是否存在是如何判断的,是所有属性都相同才算?能不能指定一个属性
{_id:0,
user:[{id:1,name:a}]
}
比如,上面这条记录,我想往user里面添加数据,如果id为1,则表示已经存在,则不添加,否则就添加到user数组中
$addToSet能实现这种需求不
谢谢

ringa_lee
ringa_lee

ringa_lee

全部回复(1)
世界只因有你

你所需要的sub document的唯一性,$addToSet也做不到。有两条思路供参考:

1、试试业务上能否创建一个复合的唯一索引

例如:在文本{_id, name, number,user[{id,name}]}的name 和 user.id创建唯一的复合索引

2、代码控制

db.test.update({ "_id" : ObjectId(""), "user.id" : {$ne : value }}, {$push : { user : { id : 1 , name : "a" }}})

db.test.update({ "_id" : ObjectId(""), "user.id" : {$nin : [] }}, {$push : { user : { id : 1 , name : "a" }}})

Update之前使用 $ne 或者 $nin 判断user.id是否存在已经有的id中,不存在才能update。

供参考。

Love MongoDB! Have Fun!

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号