Tengo una colección de documentos que contienen una matriz de documentos secundarios. Cada subdocumento tiene un valor de tiempo. Estoy tratando de ver si puedo devolver un documento secundario, en función del tiempo en el documento secundario.Consulta de MongoDB para recuperar un valor de matriz por un valor en la matriz
Sé que puedo recuperar un documento secundario usando $ slice, pero $ slice solo me da un índice o rango y desplazamiento específicos.
tiempo de ejemplo!
documentos son como así ....
{
id: 1234,
type: 'a',
subs: [
{ time: 123001, val: 'a' },
{ time: 123002, val: 'b' },
{ time: 123003, val: 'c' }
]
}
Si hago una consulta con find ({}, {submarinos: {$ rebanada: [2,1]}}) Me Atrás algo así como :
{ id: 1234, type: 'a', subs: [{ time: 123002, val: 'b' }]}
Quiero recuperar ese registro, por ejemplo, basado no en el desplazamiento, sino en el valor de tiempo 123002.
¿Posible?
go!
¡Oh, duhh! Sí, eso funcionará. Gracias. Aunque a menos que malinterprete lo que estaba diciendo, puede devolver parte de un documento .. http://www.mongodb.org/display/DOCS/Retrieving+a+Subset+of+Fields Simplemente no es parte de una matriz sin usar slice . ¡Gracias! – FredArters
Si usa su estructura original, puede hacer ''subs.2'' para obtener el tercer elemento de la matriz. Pero generalmente no sabes cuál es realmente el tercer elemento. Entonces, para las matrices, generalmente es todo o nada. –
La pregunta es antigua, pero tal vez esto sea útil para alguien que está buscando una respuesta. Es posible hacer coincidir un documento dentro de una matriz con $ elemMatch. http://www.mongodb.org/display/DOCS/Dot+Notation+%28Reaching+into+Objects%29#DotNotation%28ReachingintoObjects%29-Matchingwith%24elemMatch – Esteban