仅当MongoDB不存在时才推送项目

问题描述 投票:0回答:1

我有一个包含以下字段的文档:

{
    "id" : 15,
    "existingCodes" : [ 
        {
            "_id" : ObjectId("5c49a6c03a95f50b15409296"),
            "code" : "first"
        }, 
        {
            "_id" : ObjectId("5c49a6c03a95f50b15409295"),
            "code" : "second"
        }, 
        {
            "_id" : ObjectId("5c49a6c03a95f50b15409294"),
            "code" : "third"
        }, 
        {
            "_id" : ObjectId("5c49a6c03a95f50b15409293"),
            "code" : "fourth"
        }
    ]
}

问题是我正在尝试将一个新对象推送到existingCodes数组,但确保code值尚不存在,并且我尝试过的每个解决方案都不起作用。

我试图使用$push$ne实现这一点,但它添加了重复的字段:

db.getCollection('codes').update({ id: 15, 'existingCodes.code': { $ne: 'first' } }, { $push: { existingCodes: { code: 'first' } } })

但是如果我改变$ne以匹配“second”或任何其他现有的code值不同于“first”,它不会添加重复字段,我不明白为什么。

我也尝试过使用$addToSet

db.getCollection('codes').update({ id: 15, }, { $addToSet: { existingCodes: { code: 'first' } } })
mongodb push updating
1个回答
2
投票

添加到设置工作正常你在匹配条件中使用id代替_id附加截图! addToset.PNG

© www.soinside.com 2019 - 2024. All rights reserved.