MongoDB é um banco de dados NoSQL. Sob o NoSQL guarda-chuva colocamos todos aqueles bancos de dados que não usam a linguagem SQL para consultar os dados.
Principais características do MongoDB
MongoDB é um banco de dados muito amigável para JavaScript. Ele expõe uma API JavaScript que podemos usar para criar bancos de dados e coleções de objetos (chamados documentos ).
É sem esquema , o que significa que você não precisa pré-definir uma estrutura para os dados antes de armazená-los.
No MongoDB você pode armazenar qualquer objeto sem ter que se preocupar com os campos específicos que compõem este objeto e como armazená-los. Você diz ao MongoDB para armazenar esse objeto.
Os dados são armazenados em um formato semelhante ao JSON, mas aprimorado para permitir o armazenamento de mais do que apenas tipos de dados básicos.
Instalação
Vamos em frente e instalar o MongoDB. Você pode usar um dos muitos provedores de nuvem que oferecem acesso a uma instância do MongoDB, mas, para fins de aprendizado, nós mesmos o instalaremos.
Eu uso um Mac, então as instruções de instalação neste tutorial se referem a esse sistema operacional.
Abra o terminal e execute:
brew tap mongodb/brew
brew install mongodb-community
É isso.
As instruções não eram muito longas ou complicadas, supondo que você saiba como usar o terminal e como instalar o Homebrew.
A instalação nos diz isso:
To have launchd start mongodb now and restart at login:
brew services start mongodb-community
Or, if you don't want/need a background service you can just run:
mongod --config /usr/local/etc/mongod.conf
Você pode optar por iniciar o MongoDB uma vez e executá-lo para sempre como um serviço em segundo plano em seu computador (o que eu prefiro), ou você pode executá-lo apenas quando precisar, executando o último comando.
A configuração padrão do MongoDB é esta:
systemLog:
destination: file
path: /usr/local/var/log/mongodb/mongo.log
logAppend: true
storage:
dbPath: /usr/local/var/mongodb
net:
bindIp: 127.0.0.1
Os logs são armazenados em
/usr/local/var/log/mongodb/mongo.log
e o banco de dados é armazenado em /usr/local/var/mongodb
. Por padrão não há controle de acesso, qualquer pessoa pode ler e escrever no banco de dados.
O Mongo Shell
A melhor maneira de experimentar o MongoDB e começar a interagir com ele é executando o
mongo
programa, que inicia o shell do MongoDB. 
Agora você pode inserir qualquer comando que o Mongo entenda.
Criar um banco de dados
Quando você inicia, o Mongo cria um banco de dados chamado
test
. Execute db
no shell para informar o nome do banco de dados ativo 
Para alterar o banco de dados, basta escrever
use newname
e o newname
banco de dados será criado instantaneamente e o shell muda para usá-lo. 
Use
show databases
para listar os bancos de dados disponíveis:
Como você pode ver, o
something
banco de dados não está listado, apenas porque ainda não há coleção nele. Vamos criar um. Coleções
No MongoDB, uma coleção é o equivalente a uma tabela de banco de dados SQL.
Você cria uma coleção no banco de dados atual usando o
db.createCollection()
comando. O primeiro argumento é o nome do banco de dados e você pode passar um objeto de opções como segundo parâmetro. 
Depois de fazer isso,
show databases
listará o novo banco de dados e show collections
listará a coleção. 
Você também pode criar uma nova coleção usando-a como uma propriedade do
db
objeto e chamando insert()
para adicionar um objeto à coleção:db.dogs.insert({ name: 'Roger' })

Listar objetos em uma coleção
Para mostrar os objetos adicionados a uma coleção, use o
find()
método:
Como você pode ver, há um
_id
adicional propriedade para o registro que adicionamos. Isso é gerado automaticamente para nós pelo MongoDB. Agora, adicione mais cães:
db.dogs.insert({ name: 'Buck' })
db.dogs.insert({ name: 'Togo' })
db.dogs.insert({ name: 'Balto' })
Chamando
db.dogs.find()
nos dará todas as entradas, enquanto podemos passar um parâmetro para filtrar e recuperar uma entrada específica, por exemplo com db.dogs.find({name: 'Roger'})
:
O
find()
retorna um cursor no qual você precisa iterar. Existe outro método que é útil quando você sabe que obterá apenas um registro, que é
findOne()
, e é usado da mesma maneira. Se vários registros corresponderem a uma consulta, ele retornará apenas o primeiro. 
Atualizando registros
Para atualizar um registro você pode usar o
update()
método em uma coleção:
Removendo registros
Você pode remover um registro chamando o
remove()
método em uma coleção, passando um objeto para ajudar a identificá-lo:
Para remover todas as entradas de uma coleção, passe um objeto vazio:
db.dogs.remove({})