以下の構造のmongodbドキュメントがあります。
{
"key4" :
[
{"k1":"v1", "k2":"va1", "k3":"value1"},
{"k1":"v2", "k2":"va2", "k4":"name"},
{"k1":"v3", "k2":"va3"}
]
}
このドキュメントを特定の構造で更新していたとき。
{
"key4" :
[
{"k1":"v1", "k3":"val1"},
{"k1":"v2", "k3":"val2"},
{"k1":"v3", "k3":"val3"},
{"k1":"v4", "k3":"val4"}
]
}
として出力する必要があります。
{
"key4" :
[
{"k1":"v1", "k2":"va1", "k3":"val1"},
{"k1":"v2", "k2":"va2", "k3":"val2", "k4":"name"},
{"k1":"v3", "k2":"va3", "k3":"val3"},
{"k1":"v4", "k3":"val4"}
]
}
つまり、「k1」の値が新しい配列に存在する場合、配列の唯一のオブジェクトをnewにマージする必要があります。私はこの構造をclojureマップに実装しています。