- Tutorials
- Collections
Collections
MongoDB stores documents in collections. If a collection does not exist, MongoDB creates the collection when you first store data for that collection.
You can also explicitly create a collection with various options, such as setting the maximum size or the documentation validation rules.
Capped Collection
Capped collections have maximum size or document counts that prevent them from growing beyond maximum thresholds. All capped collections must specify a maximum size and may also specify a maximum document count. MongoDB removes older documents if a collection reaches the maximum size limit before it reaches the maximum document count.
To create a capped collection,
use the createCollection
method and specify 'capped' : true
.
const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');
// Connection URL
const url = 'mongodb://localhost:27017';
// Database Name
const dbName = 'myproject';
// Create a new MongoClient
const client = new MongoClient(url);
// Use connect method to connect to the Server
client.connect(function(err, client) {
assert.equal(null, err);
console.log("Connected correctly to server");
const db = client.db(dbName);
createCapped(db, function() {
client.close();
});
});
function createCapped(db, callback) {
db.createCollection("myCollection", { "capped": true, "size": 100000, "max": 5000},
function(err, results) {
console.log("Collection created.");
callback();
}
);
};
Document Validation
Collections with validation
compare each inserted or updated
document against the criteria specified in the validator option.
Depending on the validationLevel
and validationAction
, MongoDB
either returns a warning, or refuses to insert or update the document
if it fails to meet the specified criteria.
The following example creates a contacts
collection with a validator
that specifies that inserted or updated documents should match at
least one of three following conditions:
- the
phone
field is a string - the
email
field matches the regular expression - the
status
field is eitherUnknown
orIncomplete
.
const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');
// Connection URL
const url = 'mongodb://localhost:27017';
// Database Name
const dbName = 'myproject';
// Create a new MongoClient
const client = new MongoClient(url);
// Use connect method to connect to the Server
client.connect(function(err, client) {
assert.equal(null, err);
console.log("Connected correctly to server");
const db = client.db(dbName);
createValidated(db, function() {
client.close();
});
});
function createValidated(db, callback) {
db.createCollection("contacts",
{
'validator': { '$or':
[
{ 'phone': { '$type': "string" } },
{ 'email': { '$regex': /@mongodb\.com$/ } },
{ 'status': { '$in': [ "Unknown", "Incomplete" ] } }
]
}
},
function(err, results) {
console.log("Collection created.");
callback();
}
);
};