私は以前のバージョンのプログラムからの既存のフィールドを持つplayerdataのデータベースを持っています。時代遅れの例文書:文書構造を変更したときにmongoDB javaドライバの既存文書を更新する
{
"playername": "foo"
}
が、新しいバージョンで生成されたプレーヤーの文書は次のようになります。
{
"playername": "bar",
"playercurrency": 20
}
問題は、私がfoo
にplayercurrency
を照会しようとした場合、私はNullPointerExceptionが取得するということですfoo
の場合はplayercurrency
が存在しないためです。 foo
に保存できる他のデータを妨害することなく、playercurrency
フィールドをfoo
に追加したいと思います。私は$exists
例を使用していくつかのコードを試してみた:
players.updateOne(new Document("playername", "foo"), new Document("$exists", new Document("playername", "")));
players.updateOne(new Document("playername", "foo"), new Document("$exists", new Document("playercurrency", 20)));
私の考えは、それが存在しないので、それが唯一のplayercurrency
を更新し、それが存在するbecuaseそれだけではplayername
を残すだろうということです。私はひどく間違った存在をしているかもしれませんが、もしそうなら私に教えてください。これは私の最初のMongoDBプロジェクトの一つであり、できるだけ多くのことを学びたいと思っています。
既存のフィールドは、{{"playername": "foo"}、{"playername": "bar"}、{"playername": "tar"}のようになります。ただ質問する... –
私はあなたの質問を理解していない...私は 'foo'と' bar'を明らかにすると思いますが、それぞれ独自のドキュメントです。一つは古いバージョンで生成され、もう一つは生成されたためです新しいバージョンでは –