mongoDB - Buscar en un array y devolver unicamente el contenido encontrado

 
Vista:
sin imagen de perfil
Val: 2
Ha disminuido su posición en 10 puestos en mongoDB (en relación al último mes)
Gráfica de mongoDB

Buscar en un array y devolver unicamente el contenido encontrado

Publicado por Juan (6 intervenciones) el 07/06/2016 19:56:58
Hola amigos.!

Quisiera saber si alguien sabe como hacer una sub consulta en mongo.! o si es posible lo que pretendo hacer. le muestro mas o menos que es lo que requiero.!

tengo un JS:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
[{
	"nombre_apartado": "Quienes somos",
	"link": [{
 
		"id": 1,
		"nombre_menu": "¿quienes?",
		"link": "http://www.ejemplo.mx/quienes1/",
		"link": "http://www.ejemplo.mx/quienes1/",
 
		"sub_menu": {
			"nombre_submenu": "somos",
			"link": "http://www.ejemplo.mx/somos 2/",
			"link": "http://www.ejemplo.mx/somos 2/"
		}
	}, {
 
		"id": 2,
		"nombre_menu": "¿prueba?",
		"link": "http://www.ejemplo.mx/prueba 2/",
		"link": "http://www.ejemplo.mx/prueba 2/",
 
		"sub_menu": {
			"nombre_submenu": "prueba 2",
			"link": "http://www.ejemplo.mx/prueba 2.1/",
			"link": "http://www.ejemplo.mx/prueba 2.1/",
		}
	}]
}]

Requiero de hacer una consulta que me muestre solo la información del "" id:2 "" pero no logro llegar solo a ese campo. ya cambien los corchetes, paréntesis, etc etc...
pero no logro llegar a solo esa información del campo, alguien me podría ayudar con eso ..??

Este es mi query, pero me muestra los dos id y eso es lo que no quiero.

HELP...!!!

db.ejemplo.find({},{"nombre_apartado":"Quienes somos", "link.nombre_menu": "¿quienes?"},{"link":1}).pretty()



Alguien sabe como llegar a eso o que esta mal en mi js.

Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve
Val: 38
Ha disminuido 1 puesto en mongoDB (en relación al último mes)
Gráfica de mongoDB

Buscar en un array y devolver unicamente el contenido encontrado

Publicado por xve (44 intervenciones) el 07/06/2016 20:19:54
Hola Juan, despues de solucinar el problema en el chat, adjunto aqui la solución por si otro usuario tiene el mismo problema.

1
db.ejemplo.find({"link.id":2}, {"link.$":1})
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 2
Ha disminuido su posición en 10 puestos en mongoDB (en relación al último mes)
Gráfica de mongoDB

Buscar en un array y modificar un valor del contenido encontrado

Publicado por ivan (6 intervenciones) el 07/06/2016 20:46:04
Muchas gracias.!

Perdón pero me surge una duda mas, ya que me encuentro en mi "" id:2 ""

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
db.ejemplo.find({"link.id":2}, {"link.$":1})
{
	"_id" : ObjectId("57570606185c627fedde4b68"),
	"link" : [{
		      "id": 2,
	 	      "nombre_menu": "¿prueba?",
		      "link": "http://www.ejemplo.mx/prueba 2/",
		      "link": "http://www.ejemplo.mx/prueba 2/",
 
                      "sub_menu": {
			    "nombre_submenu": "prueba 2",
			    "link": "http://www.ejemplo.mx/prueba 2.1/",
			    "link": "http://www.ejemplo.mx/prueba 2.1/",
		      }
	           }]
}

Como puedo llegar al sub_menu, si es que quisiera hacer un update a nombre_submenu ..?? como es que llego hasta ese tercer nivel..!

saludos.!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 38
Ha disminuido 1 puesto en mongoDB (en relación al último mes)
Gráfica de mongoDB

Buscar en un array y modificar un valor del contenido encontrado

Publicado por xve (44 intervenciones) el 08/06/2016 07:19:36
Hola Ivan, para actualizar no tienes problema... seria algo así:

1
db.ejemplo.update({{"link.id":2}, {"link.$.sub_menu.nombre_submenu":"otro nombre"}})
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 2
Ha disminuido su posición en 10 puestos en mongoDB (en relación al último mes)
Gráfica de mongoDB

Buscar en un array y modificar un valor del contenido encontrado

Publicado por ivan (6 intervenciones) el 08/06/2016 17:03:48
hola xve.!

Muchas gracias por tu comentario, pero ya realizando mis pruebas me marca un error, ya revice las llaves y estan completas pero el error que me marca es el siguiente.!

Unexpected token {


ojala me puedas ayudar.!

Saludos.!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve
Val: 38
Ha disminuido 1 puesto en mongoDB (en relación al último mes)
Gráfica de mongoDB

Buscar en un array y modificar un valor del contenido encontrado

Publicado por xve (44 intervenciones) el 08/06/2016 18:10:18
Hola Ivan , perdon, he puesto dos llaves de mas... seria así:
1
db.ejemplo.update({"link.id":2}, {"link.$.sub_menu.nombre_submenu":"otro nombre"})

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 2
Ha disminuido su posición en 10 puestos en mongoDB (en relación al último mes)
Gráfica de mongoDB

Buscar en un array y modificar un valor del contenido encontrado

Publicado por ivan (6 intervenciones) el 08/06/2016 18:33:53
hola.!

ya realice la prueba, de echo desde el comentario pasado si me di cuenta de las llaves, se las quite y aun a si me sigue marcando un error, es el siguiente.!


1
db.ejemplo.update({"link.id":2}, {"link.$.sub_menu.nombre_submenu":"otro nombre"})



ERROR.!
can't have . in field names [link.$.sub_menu.nombre_submenu] at src/mongo/shell/collection.js:143

saludos.!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Buscar en un array y modificar un valor del contenido encontrado

Publicado por Jhoel (1 intervención) el 10/03/2018 21:35:11
Para hacer el update se hace de la siguiente forma:

1
db.ejemplo.update({"link.id":2}, {$set:{"link.$.sub_menu.nombre_submenu":"otro nombre"}})
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Buscar en un array y devolver unicamente el contenido encontrado

Publicado por Mariana (1 intervención) el 04/08/2016 21:08:01
La verdad es que no entiendo el link.$ . Alguien puede explicarme ? he intentado eso para ocultar los demás niveles y solo mostrar el documento que quiero del arrreglo y no me funciona.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Buscar en un array y devolver unicamente el contenido encontrado

Publicado por jose (1 intervención) el 05/11/2020 20:41:39
Trata con arrayFilters:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
$set:
    {
        'herramientas.$[i].track.sistemas.$[j].estadoSistema.idEstado': idEstado,
        'herramientas.$[i].track.sistemas.$[j].estadoSistema.descripcion': descEstado
    }
 
 
{
    arrayFilters:
    [
        { 'i._id': objIdHerramienta },
        { 'j.interaccionSistema.idInteraccion': idInteraccion }
    ]
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar