mongodb:仅当某个字段不存在时才将项插入数组

mongodb:仅当某个字段不存在时才将项插入数组,mongodb,Mongodb,我有一个这样的数据模型 { _id: 1 some_property: some_value items: [ { item_id: item1 item_properties: [ { key1: val1, key2: val2 }] }] } 当我获得一个具有item\u id=itemX的新项时,我想检查具有此item\u id的项是否

我有一个这样的数据模型

{
    _id: 1
    some_property: some_value
    items: [
    {
        item_id: item1
        item_properties: [
        {
            key1: val1,
            key2: val2
        }]
    }]
}
当我获得一个具有
item\u id=itemX
的新项时,我想检查具有此item\u id的项是否在items数组中。如果它不存在,则插入它。如果存在,我想将item_属性附加到现有item_属性

我尝试使用
$addToSet
,但这会考虑整个项目,而不是项目id本身。因此,结果是两个项目具有相同的项目id

你知道我怎样才能在原子上做到这一点吗

谢谢,
我认为,以下代码可以原子化运行

function doWhenItemExisted() {
    var n = db.c.update({
        "items.item_id" : itemX
    }, {
        $pushAll: { // I think item_properties of given item is also an array
            "items.$.item_properties" : item.item_properties
        }
    }).nModified;
    if (!n) {
        doWhenItemNotExisted();
    }
}

function doWhenItemNotExisted() {
    var n = db.c.update({
        "items.item_id" : {
            $ne : itemX
        }
    }, {
        $push: {
            "items" : item
        }
    }).nModified;
    if (!n) {
        doWhenItemExisted();
    }
}

// entry
doWhenItemExisted();