更新数组值与对象值

时间:2012-11-20 00:56:37

标签: arrays json mongodb object

如何更新数组中的sku值,如示例“B”所示。我应该和A一起过B吗?

选项A - 对象

方案

"data" : {
    "products" : {
        235099432:{
            "product_id" : 101242538,
            "sku" : "",
            "variant_id" : 235099432
        },
    ]
}

更新

db.col.update({
    "data.products.235099432.variant_id": 235099432
}, {
    $set: {
        "data.products.235099432.sku": "ITM-RED-212"
    }
});

选项B - 数组

方案

"data" : {
    "products" : [
        {
            "product_id" : 101242538,
            "sku" : "",
            "variant_id" : 235099432
        },
    ]
}

1 个答案:

答案 0 :(得分:1)

您可以使用$ position operator标识要更新的products数组元素与您的过滤器匹配:

db.col.update({
    "data.products.variant_id": 235099432
}, {
    $set: {
        "data.products.$.sku": "ITM-RED-212"
    }
});

我的投票将是选项B;在选项A中使用动态键可能会非常混乱。