On this page
collMod
On this page
Definition
collMod
-
collMod
makes it possible to add options to a collection or to modify view definitions. The command takes the following prototype form:db.runCommand( { collMod: <collection or view>, <option1>: <value1>, <option2>: <value2> ... } )
For the
<collection or view>
, specify the name of a collection or view in the current database.Use the
userFlags
field in thedb.collection.stats()
output to check the options enabled for a collection.
Options
TTL Collections
index
-
The
index
option changes the expiration time of a TTL Collection.Specify the key or index name, and new expiration time with a document of the form:
{keyPattern: <index_spec> || name: <index_name>, expireAfterSeconds: <seconds> }
In this example,
<index_spec>
is an existing index in the collection. In cases of multiple indexes with the same key pattern, the user is required to specify the index by name.seconds
is the number of seconds to subtract from the current time.On success
collMod
returns a document with fieldsexpireAfterSeconds_old
andexpireAfterSeconds_new
set to their respective values.On failure,
collMod
returns a document withno expireAfterSeconds field to update
if there is no existingexpireAfterSeconds
field orcannot find index { **key**: 1.0 } for ns **namespace**
if the specifiedkeyPattern
does not exist.
Record Allocation
noPadding
-
New in version 3.0.
noPadding
is available for the MMAPv1 storage engine only.noPadding
disables record padding for the collection. Without padding, the record allocation size corresponds to the document size, and any updates that results in document growth will require a new allocation.Warning
Only set
noPadding
totrue
for collections whose workloads have no update operations that cause documents to grow, such as for collections with workloads that are insert-only. For more information, see No Padding Allocation Strategy.
usePowerOf2Sizes
-
Deprecated since version 3.0.
usePowerOf2Sizes
is available for the MMAPv1 storage engine only.usePowerOf2Sizes
has no effect on the allocation strategy. MongoDB 3.0 uses the power of 2 allocation as the default record allocation strategy for MMAPv1.To disable the power of 2 allocation for a collection, use the
collMod
command with thenoPadding
option or thedb.createCollection()
method with thenoPadding
option. For more information, see MMAPv1 Record Allocation Behavior Changes.
Document Validation
validator
-
New in version 3.2.
validator
allows users to specify validation rules or expressions for a collection. For more information, see Schema Validation.The
validator
option takes a document that specifies the validation rules or expressions. You can specify the expressions using the same operators as the query operators with the exception of :$geoNear
,$near
,$nearSphere
,$text
, and$where
.Note
- Validation occurs during updates and inserts. Existing documents do not undergo validation checks until modification.
- You cannot specify a validator for collections in the
admin
,local
, andconfig
databases. - You cannot specify a validator for
system.*
collections.
validationLevel
-
New in version 3.2.
The
validationLevel
determines how strictly MongoDB applies the validation rules to existing documents during an update.validationLevel
Description "off"
No validation for inserts or updates. "strict"
Default Apply validation rules to all inserts and all updates. "moderate"
Apply validation rules to inserts and to updates on existing valid documents. Do not apply rules to updates on existing invalid documents.
validationAction
-
New in version 3.2.
The
validationAction
option determines whether toerror
on invalid documents or justwarn
about the violations but allow invalid documents.Important
Validation of documents only applies to those documents as determined by the
validationLevel
.validationAction
Description "error"
Default Documents must pass validation before the write occurs. Otherwise, the write operation fails. "warn"
Documents do not have to pass validation. If the document fails validation, the write operation logs the validation failure.
To view the validation specifications for a collection, use the db.getCollectionInfos()
method.
Views
viewOn
-
The underlying source collection or view for the view. The view definition is determined by applying the specified
pipeline
to this source.Required if modifying a view on a MongoDB deployment that is running with access control.
pipeline
-
The aggregation pipeline that defines the view.
Required if modifying a view on a MongoDB deployment that is running with access control.
The view definition is public; i.e.
db.getCollectionInfos()
andexplain
operations on the view will include the pipeline that defines the view. As such, avoid referring directly to sensitive fields and values in view definitions.
Write Concern
Optional. A document expressing the write concern of the drop
command.
Omit to use the default write concern.
Access Control
If the deployment enforces authentication/authorization, you must have the following privilege to run the collMod
command:
Required Privileges | |
---|---|
Modify a non-capped collection | collMod in the database |
Modify a view |
|
The built-in role dbAdmin
provides the required privileges.
Examples
Change Expiration Value for Indexes
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 }
Add Document Validation to an Existing Collection
The following example adds a validator to an existing collection named contacts
.
Note
MongoDB 3.6 adds the $jsonSchema
operator to support JSON Schema validation.
db.runCommand( { collMod: "contacts",
validator: { $jsonSchema: {
bsonType: "object",
required: [ "phone" ],
properties: {
phone: {
bsonType: "string",
description: "must be a string and is required"
},
email: {
bsonType : "string",
pattern : "@mongodb\.com$",
description: "must be a string and match the regular expression pattern"
},
status: {
enum: [ "Unknown", "Incomplete" ],
description: "can only be one of the enum values"
}
}
} },
validationLevel: "moderate",
validationAction: "warn"
} )
With the moderate
validationLevel
, MongoDB applies validation rules to insert operations and to update operationss to existing documents that already fulfill the validation criteria. Updates to existing documents that do not fulfill the validation criteria are not checked for validity.
With the warn
validationAction
, MongoDB logs any violations but allows the insertion or update to proceed.
For example, the following insert operation violates the validation rule.
db.