Referências

Instalador: http://www.mongodb.org/downloads Tutorial: http://mongly.openmymind.net/tutorial/index E-book: http://openmymind.net/2011/3/28/The-Little-MongoDB-Book

Servidor

Subir servidor com dados em um determinado caminho (configuração padrão)

mongod --data=/caminho/database

Executar servidor com configuração específica e sem autenticação

mongod.exe --noauth -f D:\Portable\Programas\mongodb\mongodb.config

Exemplo de config:

systemLog:
    destination: file
    path: "D:/Portable/Programas/mongodb/log/mongod.log"
    logAppend: true
storage:
    dbPath: "D:/Portable/Programas/mongodb/data"
    journal:
        enabled: true
setParameter:
    enableLocalhostAuthBypass: false

Cliente

Conectar num cliente mongodb local

mongo

Ajuda

help

Exibe bancos de dados disponíveis

show dbs

Seleciona banco de dados (cria um se não existir)

use demo

Exibe coleções (tabelas)

show collections

Comandos “CRUD”

Nota: Ao inserir o primeiro objeto será criada a coleção se já não houver

Inserir um objeto

db.dogs.insert({"name" : "Rusty", "breed" : "Mutt" })

Inserir múltiplos objetos

db.dogs.insert([
    {"name" : "Tater", "breed" : "Mutt", "isCute" : true }, 
    {"name" : "Lucy", "breed" : "Mutt" }, 
    {"breed" : "Labradoodle", "name" : "Lulu" }, 
    {name: "Snoopy", breed: "Beagle", isCartoon: true}
])

Listar todos os objetos

db.dogs.find()

Listar objeto filtrando

db.dogs.find({name: "Rusty"})

Atualizar objeto inteiro (removendo campos não atualizados)

db.dogs.update({name: "Lulu"}, {breed: "Labradoodle"})

Atualizar objeto parcialmente (mantém campos existentes)

db.dogs.update({name: "Rusty"}, {$set: {name: "Tater", isCute: true}})

Remove objeto específico

db.dogs.remove({breed: "Mutt"})

Remove TODOS os objetos

db.dogs.remove({})

Aplicando ordenação, limites, etc

db.dogs.find().sort({name: -1}).skip(1).limit(2)

Obter o nome do bando de dados em uso

db.getName()

Obter o nome das coleções (tabelas)

db.getCollectionNames();

Conta quantos documentos há em uma coleção

db.COLECAO.count();

Lista todos os objetos de uma coleção

db.COLECAO.find();

Filtra os objetos

db.COLECAO.find({campoTexto: 'valor'});

Múltiplas condições, usando comparadores < >=

db.COLECAO.find({campoNumerico: {$lt: 100}, campoNumerico: {$gte: 200}});

O segundo argumento de find() são os campos a serem buscados

db.COLECAO.find({}, {campo1: 1, campo2: 1});

Ordenação

db.COLECAO.find().sort({campoEmordemAscendente: 1, campoEmOrdemDescendente: -1});

Limitar a quantidade

db.COLECAO.find().limit(N);

Ignorar os primeiros N registros

db.COLECAO.find().skip(N);

Uma consulta combinando filtro, seleção de campos, ordenação, limitar a X documentos e pular Y linhas

db.COLECAO.find({campoFiltrado: 'valor'}, {campoSelecionado: 1})
        .sort({campoOrdenacao:-1})
        .limit(X)
        .skip(Y);

Conta documentos usando filtro -> semelhante a db.COLECAO.find({filtro…}).count();

db.COLECAO.count({campoFiltro: {$lt: valorMaximo});

Inserindo documentos em uma coleção (não é obrigatório que tenha os mesmos campos

db.COLECAO.insert({campo1: valor1, campo2: valor2, campo3: valor3});
db.COLECAO.insert({campo1: valor1, campo2: valor2);

Selecionar objetos conforme os campos que possuem

db.COLECAO.find({campo3: {$exists: true}});

Substitui um registro inteiro (neste caso, busca exatamente o documento por seu id)

db.COLECAO.update({_id: ObjectId('????????????????????????')}, {campo1: outroValor1, campo2: outroValor2});

Atualiza somente um ou mais campos específicos (sem alterar os demais)

db.COLECAO.update({_id: ObjectId('????????????????????????')}, {$set: {campo1: valor1}});

Incrementa o valor de um campo numérico de UM objeto (o primeiro localizado)

db.COLECAO.update({campoFiltro: 'filtro'}, {$inc: {contador: 1}});

Atualiza o objeto se existir, ou insere um novo valor (3o. parâmetro: upsert = true)

db.COLECAO.update({campoFiltro: 'filtro'}, {$inc: {contador: 1}}, true);

Acrescenta um valor em um campo que é uma lista

db.COLECAO.update({filtro: 'valor'}, {$push: {lista: 'novoElemento'}}, false, true);

Atualiza todos os objetos filtrados (4o. parâmetro = true)

db.COLECAO.update({filtro: 'valor'}, {$set: {campo: 'novoValor'}}, false, true);

Mongoose

Instalar no projeto

npm install mongoose --save

Importar e conectar

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/NOMEBD');

Definir schema

var dogSchema = new mongoose.Schema({
    name: String,
    age: Number,
    breed: String
});

Modelo

var Dog = mongoose.model("Dog", dogSchema);

Criar novo objeto e salvar

var myDog = new Dog({name: "Rusty", age: 11, breed: "Mutt" });
myDog.save(function (err, dog) {
    if (err) {
        console.error(err);
        return;
    }
    console.log(dog);
});

Criar e salvar numa ação

Dog.create({
    "name" : "Rusty", 
    "age": 11, 
    "breed" : "Mutt"
}, function (err, dog) {
    // fazer algo
});