"Mongo is not a toy, although it can be fun to play with." - Josh Burke
to connect to a database you need a Mongo URI (or URL) identifying the server, port, etc.:
Connection URL format:
mongodb://username:password@host/database
for example
mongodb://mydatabasehost.com:27017/til
Note that the term "database" is overloaded: it refers to either:
a collection holds documents
this is analogous to a table in SQL
In MongoDB, a document is essentially a single JavaScript object
Like in a relational database, a document can be created, read, updated, deleted, indexed, searched for, ...
Unlike in a relational database, a document can contain any value for its fields, including arrays and nested objects.
This nesting and type-flexibility makes it very appropriate to store whatever JavaScript objects your app uses, without needing to devise a mapping between nested objects and joined relational tables.
MongoDB has a JavaScript REPL console, like node
.
Launch it by typing mongo dbname
on the command line -- e.g. for the til
database, run mongo til
In this console, run help
to see what's possible.
> db.entries.find({})
{ "_id" : ObjectId("5b5d0e45114a7c1433296d71"), "when" : ISODate("2018-07-29T00:45:57.074Z"), "text" : "hello" }
{ "_id" : ObjectId("5b5d1595e71e8e073c15b229"), "when" : ISODate("2018-07-29T01:17:09.191Z"), "text" : "hello there" }
{ "_id" : ObjectId("5b5e143b203dd808f88d2548"), "when" : ISODate("2018-07-29T19:23:39.695Z"), "text" : "chickens like corn" }
{ "_id" : ObjectId("5b5e27ba44c44608f97083f3"), "when" : ISODate("2018-07-29T20:46:50.749Z"), "text" : "dogs like to bark" }
> db.entries.find({ when: {'$gte': new Date(2018, 6, 29) }})
{ "_id" : ObjectId("5b5e143b203dd808f88d2548"), "when" : ISODate("2018-07-29T19:23:39.695Z"), "text" : "chickens like corn" }
{ "_id" : ObjectId("5b5e27ba44c44608f97083f3"), "when" : ISODate("2018-07-29T20:46:50.749Z"), "text" : "dogs like to bark" }
_id
is assigned by Mongo when a document is insertedObjectId
is a factory function that either generates a new id, or /