Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marciu

[Resolvido] Newbie Mongodb Sub-Doc

Recommended Posts

Boa noite, amigos.

 

To iniciando com mongo e gostaria de converter o seguinte SELECT mySql para o find() ou MapReduce do Mongodb:

 

SELECT user.name, membership.identity as login FROM user INNER JOIN membership ON user.idMemberShip = membership.id

 

No mongo na coleção user há um campo chamado memberShip, que na verdade é outro documento, exemplo:

 

{
 "name": "Marcio",
 "lastName": "Souza",
 "cpf": "000.000.000-00",
 "memberShip": {
   "createDate": null,
   "identity": "marcio",
   "credential": "imasters"
 },
 "_id": 2
}

 

E o resultado da consulta, nesse formato:

 

{
 "name": "Marcio",
 "login": "marcio" /*o mesmo que identity:marcio*/
}

 

Como faço? Confesso que to perdido nessas queries do Mongo ainda mais as complexas quando envolve outras coleções. Usar o MapReduce tem que ser ninja.

 

Grato desde já.

 

Márcio. ^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz um tempo que você postou e talvez já tenha encontrado a resposta, mas se alguém mais tiver a mesma dúvida está é a solução.

 

No console do mongoDB:

db.user.findOne({"name":"Marcio", "memberShip.identity":"marcio"})

 

Em Java:

BasicDBObject query = new BasicDBObject();
query.put("name", "Marcio");
query.put("memberShip.identity", "marcio");

DBObject bdo = coll.findOne(query);

 

Abraços :joia:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigado, Raphy!!

 

Faz um tempo que você postou e talvez já tenha encontrado a resposta, mas se alguém mais tiver a mesma dúvida está é a solução.

 

No console do mongoDB:

db.user.findOne({"name":"Marcio", "memberShip.identity":"marcio"})

 

Em Java:

BasicDBObject query = new BasicDBObject();
query.put("name", "Marcio");
query.put("memberShip.identity", "marcio");

DBObject bdo = coll.findOne(query);

 

Abraços :joia:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite, amigos.

 

To iniciando com mongo e gostaria de converter o seguinte SELECT mySql para o find() ou MapReduce do Mongodb:

 

SELECT user.name, membership.identity as login FROM user INNER JOIN membership ON user.idMemberShip = membership.id

 

No mongo na coleção user há um campo chamado memberShip, que na verdade é outro documento, exemplo:

 

{
 "name": "Marcio",
 "lastName": "Souza",
 "cpf": "000.000.000-00",
 "memberShip": {
   "createDate": null,
   "identity": "marcio",
   "credential": "imasters"
 },
 "_id": 2
}

 

E o resultado da consulta, nesse formato:

 

{
 "name": "Marcio",
 "login": "marcio" /*o mesmo que identity:marcio*/
}

 

Como faço? Confesso que to perdido nessas queries do Mongo ainda mais as complexas quando envolve outras coleções. Usar o MapReduce tem que ser ninja.

 

Grato desde já.

 

Márcio. ^_^

 

No console:

 

db.user.find({name: 'Marcio', memberShip.identity: 'marcio'}, {name:1, memberShip.identity:1, _id: 0})

 

O segundo parametro é onde passamos quais os campos de retorno, o _id:0 eh para nao retornar o ObjectID

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.