Digamos que tengo el siguiente esquema de documento en una colección llamada 'usuarios':MongoDB: ¿Consulta y recupera objetos dentro de una matriz incrustada?
{
name: 'John',
items: [ {}, {}, {}, ... ]
}
La matriz 'artículos' contiene objetos en el siguiente formato:
{
item_id: "1234",
name: "some item"
}
Cada usuario puede tener varios elementos incrustado en la matriz de 'elementos'.
Ahora, quiero poder obtener un elemento por un item_id para un usuario determinado.
Por ejemplo, quiero obtener el elemento con el id "1234" que pertenece al usuario con el nombre "John".
¿Puedo hacer esto con mongoDB? Me gustaría utilizar su poderosa indexación de matriz, pero no estoy seguro de si puede ejecutar consultas en matrices embebidas y devolver objetos desde la matriz en lugar del documento que la contiene.
Sé que puedo buscar usuarios que tienen un determinado artículo usando {users.items.item_id: "1234"}. Pero quiero buscar el elemento real de la matriz, no el usuario.
Como alternativa, ¿existe alguna forma mejor de organizar estos datos para que pueda obtener fácilmente lo que quiero? Todavía soy bastante nuevo para mongodb.
Gracias por cualquier ayuda o consejo que pueda proporcionar.
posible duplicado de [MongoDB extraer sólo el elemento seleccionado en serie] (http: // stackoverflow.com/questions/3985214/mongodb-extract-only-the-selected-item-in-array) – Foreever
Hola, @Nebs, ¿puedes revisar la respuesta aceptada y cambiarla? Porque hay una solución a este problema sin necesidad de dos colecciones separadas en versiones más nuevas de mongodb. –