2012-11-08 11 views
9

ho una collezione esistente che ho bisogno di convertire in un Capped Collection utilizzando il metodo elencato:Set max su Mongo ricoperto raccolta

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

Tuttavia, il campo max non è accettata come parametro

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

Qualche idea su come impostare questo?

risposta

6

max è solo un'opzione nel metodo createCollection, non convertToCapped:

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

C'è un cloneCollectionAsCapped, ma non sembra che ci sia un'opzione di max doc neanche lì: http://docs.mongodb.org/manual/reference/command/cloneCollectionAsCapped/

Si può è necessario creare una nuova collezione limitata con il parametro max e trasferire dati e indici dalla raccolta esistente. Vedi http://learnmongo.com/posts/easily-move-documents-between-collections-or-databases/

+0

Sembra che dovrebbe esserci un modo per modificare le proprietà di una raccolta senza spostare tutti i dati. Sto parlando di una raccolta di dimensioni medie di 30 milioni di documenti, quindi sarebbe preferibile un metodo più diretto. – trimbletodd