MongoDB
Introduction#
MongoDB is a free and open-source cross-platform document orient database program. Unlike classic SQL databases, MongoDB uses BSON (like JSON) to store data. Meteor was designed to use MongoDB for database storage and this topic explains how to implement MongoDB storage into Meteor applications.
Export a Remote Mongo DB, Import Into a Local Meteor Mongo DB
Helpful when you want to grab a copy of a production database to play around with locally.
mongodump --host some-mongo-host.com:1234 -d DATABASE_NAME -u DATABASE_USER -p DATABASE_PASSWORDThis will create a localdumpdirectory; within that directory you’ll see a directory with yourDATABASE_NAME.- With your local meteor app running, from within the
dumpdirectory, run:mongorestore --db meteor --drop -h localhost --port 3001 DATABASE_NAME
Get the Mongo URL of Your Local Meteor Mongo DB
While your Meteor app is running locally:
meteor mongo --urlConnect Your Local Meteor App to an Alternative Mongo DB
Set the MONGO_URL environment variable before starting your local Meteor app.
Linux/MacOS Example:
MONGO_URL="mongodb://some-mongo-host.com:1234/mydatabase" meteoror
export MONGO_URL="mongodb://some-mongo-host.com:1234/mydatabase"
meteorWindows Example
Note: don’t use "
set MONGO_URL=mongodb://some-mongo-host.com:1234/mydatabase
meteorNPM
//package.json
"scripts": {
"start": "MONGO_URL=mongodb://some-mongo-host.com:1234/mydatabase meteor"
}
$ npm startRunning Meteor without MongoDB
Set MONGO_URL to any arbitrary value except for a database URL and ensure no collections are defined in your Meteor project (including collections defined by Meteor packages) to run Meteor without MongoDB.
Note that without MongoDB, server/client methods alongside any packages related to Meteor’s user-account system will be undefined. Ex: Meteor.userId()
Linux/Mac:
MONGO_URL="none" meteoror
export MONGO_URL="none"
meteorWindows:
set MONGO_URL=none
meteorGetting Started
You can start the mongo shell by running the following command inside your Meteor project:
meteor mongoPlease note: Starting the server-side database console only works while Meteor is running the application locally.
After that, you can list all collections by executing the following command via the mongo shell:
show collectionsYou can also run basic MongoDB operations, like querying, inserting, updating and deleting documents.
Query Documents
Documents can be queried by using the find() method, e.g.:
db.collection.find({name: 'Matthias Eckhart'});This will list all documents that have the name attribute set to Matthias Eckhart.
Inserting Documents
If you want to insert documents in a collection, run:
db.collection.insert({name: 'Matthias Eckhart'});Updating Documents
In case you want to update documents, use the update() method, for instance:
db.collection.update({name: 'Matthias Eckhart'}, {$set: {name: 'John Doe'}});Executing this command will update a single document by setting the value John Doe for the field name (initially the value was Matthias Eckhart).
If you want to update all documents that match a specific criteria, set the multi parameter to true, for example:
db.collection.update({name: 'Matthias Eckhart'}, {$set: {name: 'John Doe'}}, {multi: true});Now, all documents in the collection that had initially the name attribute set to Matthias Eckhart have been updated to John Doe.
Deleting Documents
Documents can be easily removed by using the remove() method, for example:
db.collection.remove({name: 'Matthias Eckhart'});This will remove all documents that match the value specified in the name field.