2012-11-08 14 views
9

şapkalı Ben listelenen yöntemini kullanarak bir Capped Collection dönüştürmek gerek varolan bir koleksiyonu var:Seti maksimum toplama

> db.runCommand({"convertToCapped": "mycoll", size: 100000}); 

Ancak, maksimum alan bir parametre

> db.mycol1.convertToCapped 
function (bytes) { 
    if (!bytes) { 
     throw "have to specify # of bytes"; 
    } 
    return this._dbCommand({convertToCapped: this._shortName, size: bytes}); 
} 
olarak kabul edilmemektedir

Bunu nasıl ayarlayacağınız hakkında bir fikriniz var mı?

cevap

6

max createCollection yönteminde sadece bir seçenektir, convertToCapped değil:

db.createCollection("mycoll", {capped:true, size:100000, max:100}); 

Orada bir cloneCollectionAsCapped, ama maksimum doc seçenek var gibi görünmüyor ya: http://docs.mongodb.org/manual/reference/command/cloneCollectionAsCapped/

Sen may max parametresiyle yeni bir kapaklı koleksiyon oluşturmalı ve mevcut koleksiyondan veri ve endeksleri aktarmalıdır. Bkz. http://learnmongo.com/posts/easily-move-documents-between-collections-or-databases/

+0

Tüm veriyi taşımadan bir koleksiyonun özelliklerini düzenlemenin bir yolu olmalı. ~ 30m belgelerin orta ölçekli bir koleksiyonundan bahsediyorum, bu yüzden daha doğrudan bir yöntem tercih edilecek. – trimbletodd