Skip to content

Instantly share code, notes, and snippets.

@neriberto
Last active September 21, 2015 22:56
Show Gist options
  • Save neriberto/7498372874023503256b to your computer and use it in GitHub Desktop.
Save neriberto/7498372874023503256b to your computer and use it in GitHub Desktop.
MongoDB Tips

Apagar um database:

use mydb; 
db.dropDatabase();

Pegar o último registro:

db.collection.find().limit(1).sort({$natural:-1})

Usando o eval para atualizar documentos:

db.eval(function(){
db.movies.find().forEach(function(e){
e.duration = e.duration -1;
db.movies.save(e);
});
});

Sorting em Array

db.movies.findOne({_id : ObjectId("55b3914d0fb166b426ad30ec")}).actors.sort()

Sorting Reverso em Array

db.movies.findOne({_id : ObjectId("55b3914d0fb166b426ad30ec")}).actors.sort().reverse()

Pegando os índices

db.movies.getIndexes()

Exemplo de Aggregate para encontrar documentos duplicados

Obs. $name na variável group é o nome do field no documento JSON, que neste exemplo também é name

var group = { _id: { name: '$name' }, count: { $sum: 1 }};
var match = { count: {$gt: 1 } };
db.movies.aggregate([{$group: group}, { $match: match }])

Limitando banco de dados por quantidade de registro e/ou tamanho em bytes, exemplo usando 512MB

db.createCollection("log", {capped:true, size: 512000, max : 5}

Criando indexes

db.movies.createIndex( { name: 1 } )

Analisando indexes

db.movies.find({name: /^T/}).explain('executionStats').executionStats

Database References

db.riders.insert( { name: "Daenerys Targaryen"})
db.dragons.insert( { name: "Drogo"} )
db.dragons.find( { name: "Drogo"} )
db.riders.find( { name: "Daenerys Targaryen"})

Resultado:

{ "_id" : ObjectId("55b3d206a7301d161f3451f8"), "name" : "Dynaries Taygarien", "dragon" : DBRef("dragons", ObjectId("55b3d217a7301d161f3451f9")) }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment