0

下にコレクションがあります。配列要素を更新しようとしています。

lineItem _id の値が 1 の場合は更新しようとしています。spec リストに移動し、specName が「モデル」の場合は、characteristicsValue を 900 から 50 に更新します。ご覧のとおり、_id も配列です。

コレクションデータ:

    {
    "_id": "100",
    "name": "Campaign",
    "status": "Active",
    "parts": {
        "lineItem": [
            {
                "_id": [
                    {
                        "name": "A",
                        "value": "1"
                    }
                ],
                "spec": [
                    {
                        "specName": "Brand",
                        "characteristicsValue": [
                            {
                                "value": "500"
                            }
                        ]
                    },
                    {
                        "specName": "Model",
                        "characteristicsValue": [
                            {
                                "value": "900"
                            }
                        ]
                    }
                ]
            },
            {
                "_id": [
                    {
                        "name": "B",
                        "value": "2"
                    }
                ],
                "spec": [
                    {
                        "specName": "Brand",
                        "characteristicsValue": [
                            {
                                "value": "300"
                            }
                        ]
                    },
                    {
                        "specName": "Model",
                        "characteristicsValue": [
                            {
                                "value": "150"
                            }
                        ]
                    }
                ]
            },
            {
                "_id": [
                    {
                        "name": "C",
                        "value": "2"
                    }
                ]
            }
        ]
    }
}

関連するアップデートが期待どおりに機能しません。

 db.Collection.update({"parts.lineItem._id.value" : "1", 
    "parts.lineItem.spec.specName" : "Model"  },{ $set: { 
    "parts.lineItem.spec.$.characteristicsValue" : "50" } })

編集: すべての _id には仕様配列があります。そのため、_id を見つけてから、_id 配列の下の仕様に移動し、ブランドを見つけて値を更新する必要があります。

4

1 に答える 1