New in version 2.2.

collMod makes it possible to add flags to a collection to modify the behavior of MongoDB. Flags include usePowerOf2Sizes and index. The command takes the following prototype form:

db.runCommand( {"collMod" : <collection> , "<flag>" : <value> } )

In this command substitute <collection> with the name of a collection in the current database, and <flag> and <value> with the flag and value you want to set.

Use the userFlags field in the in db.collection.stats() output to check enabled collection flags.


The usePowerOf2Sizes flag changes the method that MongoDB uses to allocate space on disk for documents in this collection. By setting usePowerOf2Sizes, you ensure that MongoDB will allocate space for documents in sizes that are powers of 2 (e.g. 4, 8, 16, 32, 64, 128, 256, 512...8388608). With usePowerOf2Sizes, MongoDB will be able to more effectively reuse space.


With usePowerOf2Sizes, MongoDB allocates records that have power of 2 sizes until record sizes equal 4 megabytes. For records larger than 4 megabytes with usePowerOf2Sizes set, mongod will allocate records in full megabytes by rounding up to the nearest megabyte.

usePowerOf2Sizes is useful for collections where you will be inserting and deleting large numbers of documents to ensure that MongoDB will effectively use space on disk.


To enable usePowerOf2Sizes on the collection named products, use the following operation:

db.runCommand( {collMod: "products", usePowerOf2Sizes : true })

To disable usePowerOf2Sizes on the collection products, use the following operation:

db.runCommand( { collMod: "products", usePowerOf2Sizes: false })


Changed in version 2.2.1: usePowerOf2Sizes now supports documents larger than 8 megabytes. If you enable usePowerOf2Sizes you must use at least version 2.2.1.

usePowerOf2Sizes only affects subsequent allocations caused by document insertion or record relocation as a result of document growth, and does not affect existing allocations.


The index flag changes the expiration time of a TTL Collection.

Specify the key and new expiration time with a document of the form:

{keyPattern: <index_spec>, expireAfterSeconds: <seconds> }

where <index_spec> is an existing index in the collection and seconds is the number of seconds to subtract from the current time.


To update the expiration value for a collection named sessions indexed on a lastAccess field from 30 minutes to 60 minutes, use the following operation:

db.runCommand({collMod: "sessions",
               index: {keyPattern: {lastAccess:1},
                       expireAfterSeconds: 3600}})

Which will return the document:

{ "expireAfterSeconds_old" : 1800, "expireAfterSeconds_new" : 3600, "ok" : 1 }

On success collMod returns a document with fields expireAfterSeconds_old and expireAfterSeconds_new set to their respective values.

On failure, collMod returns a document with no expireAfterSeconds field to update if there is no existing expireAfterSeconds field or cannot find index { **key**: 1.0 } for ns **namespace** if the specified keyPattern does not exist.

←   compact reIndex  →