2

MongoVUE を使用してドキュメントから「キー」を削除するのは簡単です。表示モードで右クリックし、「削除」を選択するだけです。

ただし、コレクションからサブドキュメント全体を削除する場合、そのようなオプションは存在しないようです。

GUI を使用してコレクションからサブドキュメントを削除するための迅速で簡単な方法があるかどうかは誰にもわかりませんか? (つまり、クエリに頼らない)

4

2 に答える 2

4


GUI をクリックするだけではコレクション全体のキーを削除できないため、少し注意が必要です。キーを削除するコレクションを選択し、更新ボタンをクリックします。これで、mongoVUE は更新ビューを表示します。
パネル「Enter Find Json」に、次のコードを入力する必要があります。
{ "keyToDelete": { $exists : true } }

もう一方のパネルで、「Enter Update Json」に次のように入力します。
{ $unset : { "keyToDelete" : 1} }

「更新」ボタンをクリックしてクエリを実行すると、選択したコレクションにキー「keyToDelete」が表示されなくなります。

ここまでひろり

于 2011-12-01T12:13:02.137 に答える
2

特に私のように MongoDB (および JSON) に慣れていない人にとっては、確かに注意が必要です。また、MongoVUE から特定のサブドキュメントを削除しようとしていましたが、方法がわかりませんでした。最後に解決策を見つけたので、他の人が同じ問題に遭遇した場合に備えて、ここで共有したいと思いました.

私はこの文書を持っています (ユーザー):

{
  "_id" : ObjectId("510d3e719d0d3627ec73abe4"),
  "Name" : "John Doe",
  "Country" : "USA",
  "Highscores" : [{
      "Score" : 15,
      "DateStamp" : ISODate("2013-02-02T11:35:51.905Z")
    }, {
      "Score" : 19,
      "DateStamp" : ISODate("2013-02-02T11:36:04.886Z")
    }, {
      "Score" : 40,
      "DateStamp" : ISODate("2013-02-02T11:36:21.714Z")
    }]
}

20 を超えるスコア (つまり、最後のハイスコアのみ) を削除し、リストに 2 つのサブドキュメントを残します。次のクエリで自分のドキュメント (ユーザー ドキュメント全体) を見つけることができます。

{ "Highscores.Score": { $gt: 20 } }

しかし、MongoVUE で削除ウィンドウを開いて検索クエリを入力すると、すべてのハイスコアを含むユーザー全体が削除されます。サブドキュメントを削除するための $unset を取得できませんでした。いくつかの検索の後、この更新 JSON がキーであることがわかりました。

{ $pull : { Highscores : { Score : { $gt: 20 } } } }

それが役に立てば幸い!

于 2013-02-02T18:58:42.483 に答える