0

如何更新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
        },
    ]
}
4

1 回答 1

1

您可以使用$位置运算符来识别products要更新的与您的过滤器匹配的数组元素:

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

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

于 2012-11-20T01:25:23.210 回答