Skip to content

Instantly share code, notes, and snippets.

@huogerac
Created November 1, 2011 21:09
Show Gist options
  • Save huogerac/1331915 to your computer and use it in GitHub Desktop.
Save huogerac/1331915 to your computer and use it in GitHub Desktop.
MongoDB Tests
@Entity
public class Produto {
@Id private ObjectId id;
private String nome;
private String complemento;
private String tag;
private double preco;
private Date inicioEm;
private Date validoAte;
//getters and setters
}
public class ProdutoDAO extends BasicDAO<Produto, String> {
public ProdutoDAO(Mongo mongo, Morphia morphia, String dbName) {
super(mongo, morphia, dbName);
}
public List<Produto> findByTag(String tag) {
List<Produto> result = super.getDatastore().find(Produto.class).field("tag").equal(tag).asList();
return result;
}
}
@michetti
Copy link

michetti commented Nov 3, 2011

Então, o funcionamento parece ser esse mesmo, mas depois de dominar a parte mais basica, de uma lida sobre as partes q tornam o mongo diferente dos bancos relacionais.

Uma dessas caracteristicas, é a de usar objetos embedded, e de poder fazer modificações direto nesses objetos embedded, sem ter que fazer joins. Por exemplo, imagina que seu sistema fosse para os usuários fazerem comentários sobre os produtos. Com o Mongo, vc poderia fazer esses comentários (com autor, nome, data, ou seja, um objeto Comentário completo), como uma lista de objetos embedded no Produto.

Assim quando vc for carregar o Produto, ja vem com todos os comentários juntos, e vc também tem operações como $push,$set e $pull para modificar os comentários dentro dos produtos de forma muito eficientes.

Essas operações que descrevi estão aqui:
http://www.mongodb.org/display/DOCS/Updating

Não sei se o link é esse, mas fala sobre como pensar no schema para o Mongo:
http://www.mongodb.org/display/DOCS/Schema+Design

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment