2016-04-08 5 views
1

たとえば、オブジェクトの10%を削除します。MongoDBコレクションの古いオブジェクトの10%を削除します。

私はコレクションを取得し、時間をかけて並べ替えます。今私はイテレータを持っています。私は削除を言うが、それは動作しません。クリアは機能しません。どのように最初のオブジェクトだけを削除できますか?

Try1

MongoCursor<Document> cursor = collection.find().sort(new BasicDBObject("utc-stamp", 1)).iterator(); 
     while (cursor.hasNext()) { 
      Document document = (Document) cursor.next(); 
      document.clear(); 

     } 

は、私は見当がつかない2

MongoCursor<Document> iterator = collection.find().sort(new BasicDBObject("utc-stamp", 1)).iterator(); 
for(int i = 0; i< collection.count()-2; i++) { 
    iterator.next().clear(); 
} 
while (iterator.hasNext()) { 
    docs.add(iterator.next()); 
} 

を試してみてください。コレクションの名前とオブジェクトのサイズを取得できます。

私があなたを助けてくれることを願っています。

+2

目的は何ですか。あなたは限られた数のレコードのためのスペースしか持たないコレクションを維持しようとしていますか?古いレコードを削除して、コレクションがいっぱいの場合は新しいレコードのためのスペースを作成します。これがあなたが探しているものなら、 'CappedCollection'を使用してください。これを参照してください:https://docs.mongodb.org/manual/core/capped-collections/ –

答えて

0
collection.deleteOne(document); 

コレクションからドキュメントを削除するには、コレクションの削除操作を呼び出す必要があります。 official documentationを参照してください。

注:100件の文書を削除する場合は、100回の個別のDB削除呼び出しが行われます。また、@ Siddharth Ajmeraのキャップ付きコレクションを使用することをお勧めします。

関連する問題