mongo コレクションに次のようなドキュメントが 1 つあるとします。
{
"_id": 123,
"field_to_prune":
{
"keep_field_1": "some value",
"random_field_1": "some value",
"keep_field_2": "some value",
"random_field_2": "some value",
"random_field_3": "some value"
}
}
そのドキュメントを次のように整理したいと思います。
{
"_id": 123,
"field_to_prune":
{
"keep_field_1": "some value",
"keep_field_2": "some value"
}
}
ただし、私の問題は、「ランダムな」フィールド名が何であるかがわからないことです。mongo では、いくつかの既知のフィールドを除くすべてのフィールドを $unset するにはどうすればよいですか?
いくつかの方法を考えることができますが、構文はわかりません..すべてのフィールド名を選択し、それらのそれぞれについてフィールドの設定を解除できます。このようなもの:
[Some query to find all field names under "field_to_prune" for id 123].forEach(function(i) {
var key = "field_to_prune." + i;
print("removing field: " + key);
var mod = {"$unset": {}};
mod["$unset"][key] = "";
db.myCollection.update({ _id: "123" }, mod);
});
私が考えていた別の方法は、フィールド名が定義した文字列の配列にない場所を設定解除することでした。それを行う方法もわかりません。何か案は?