2016-04-08 13 views
1

Örneğin, nesnelerin% 10'unu silmek istiyorum.MongoDB koleksiyonundaki eski Nesnenin% 10'unu silin

Koleksiyonu alıp zamana göre sıralıyorum. Şimdi bir yineleyici var. Kaldırmak istiyorum ama işe yaramıyor. Clear çalışmıyor. Yalnızca ilk Nesneleri nasıl silebilirim?

tutar 1 TL

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

     } 

Ben fikrim yok 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()); 
} 

deneyin. Koleksiyonun adını ve nesnelerin boyutunu alabilirim.

Umarım bana yardımcı olabilirsin.

+2

Amacı nedir? Sadece sınırlı sayıda kayıt için yer olan bir koleksiyonu sürdürmek istiyorsunuz. Koleksiyonunuz doluysa eski kayıtları yeni kayıtlar oluşturmak için silebilirsiniz. Aradığınız şey buysa, bir 'CappedCollection' kullanın. Şuna bakın: https://docs.mongodb.org/manual/core/capped-collections/ –

cevap

0
collection.deleteOne(document); 

Belgeyi koleksiyondan kaldırmak için koleksiyondaki silme işlemini çağırmanız gerekir. official documentation'a bakın.

Not: 100 belgenin silinmesi gerekiyorsa, 100 ayrı DB silme çağrısı yapılır. Ayrıca, @Siddharth Ajmera'nın sınırlandırılmış koleksiyonları kullanma önerisini dikkate alınız.