2016-07-04 6 views
3

に一部のデータが削除私は200000はとても削除後のエントリの総数は372985から200000MongoDBの

に減少した後372985名のカウントが、私はこれを行うことができますどのようにエントリを削除したい持っているMongoDBのコレクションを持っていますmongoDBのクエリですか?

ユースケース

私のPythonコードは、私のマシン構成ごとに膨大なデータを処理することができない、だから私はそれが限られたRAMで実行できるように、Mongoのコレクションのサイズを小さくしたいです。

これをmongo queryで行うことができない場合は、誰かが同じことを行うためにpythonを試してみるためのヒントを与えることができます。

+0

は、我々は、スキップを利用すると、文書のカーソルループ –

+0

@PraneethGudumasuでレコードを削除することができます:あなたは一例で説明することはできますか? – x0v

+0

try { \t MongoClientクライアント=新しいMongoClient( "localhost"、27017); MongoDatabase db = client.getDatabase( "students"); MongoCollection collection = db.getCollection( "grades"); \t MongoCursor カーソル=コレクション.find()。スキップ(10).iterator(); 一方(cursor.hasNext()){ \t \t \t文書DOC = cursor.next()。 \t \t collection.deleteOne(doc); \t } –

答えて

1

MongoDBには、削除する文書と照合するためのクエリが必要なため、手順を実行する必要があります。ドキュメントを削除するときにMongoDBはskipまたはlimitを使用できません。あなたが試すことができます1

で見つかったリストに属する文書を削除200000

  • 後の文書にジャンプするスキップ使っ

    1. 検索削除したい文書(のIDS)、モンゴシェルで:

      var to_delete = db.collection.find({}, {_id : 1}) 
           .skip(200000) 
           .toArray() 
           .map(function(doc) { return doc._id; }); 
      
      db.collection.remove({_id: {$in: to_delete}}) 
      
  • +0

    ありがとう、これは私のために働いた:) – x0v