0

sku例「B」のように、配列内の値をどのように更新しますか。BよりもAの方がいいですか?

オプション 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 に答える