He algunos documentos guardados en una colección (llamada urls
) que se ven así:MongoDB - Partido de expresiones regulares de claves para subdocumentos
{
payload:{
url_google.com:{
url:'google.com',
text:'search'
}
}
},
{
payload:{
url_t.co:{
url:'t.co',
text:'url shortener'
}
}
},
{
payload:{
url_facebook.com:{
url:'facebook.com',
text:'social network'
}
}
}
Utilizando el mongo CLI, es posible buscar subdocumentos de payload
que partido /^url_/
? Y, si eso es posible, ¿también sería posible consultar en los subdocumentos del partido (por ejemplo, asegúrese de que exista text
)?
que estaba pensando algo como esto:
db.urls.find({"payload":{"$regex":/^url_/}}).count();
pero eso es devolver 0 resultados.
Cualquier ayuda o sugerencia sería genial.
Gracias,
Matt
Gracias por su respuesta. Lamentablemente, no tengo control sobre el diseño de los documentos que se insertan en la colección:/ Además, no estoy seguro de lo que quiere decir cuando dice documento incrustado? ¿Tienes un enlace? ¿Es eso lo mismo que un subobjeto? –
Creo que significa lo mismo que lo que llamas un "subobjeto". El "documento incrustado" es un término más centrado en los datos, mientras que "subobjeto" es un término más centrado en la programación (para los idiomas en los que los documentos Mongo se expresan como una jerarquía de objetos). Si no puede cambiar la estructura de los documentos en su colección, podría considerar usar map-reduce para reescribirlos en un formato más consultable (como el que propuse aquí) – dcrosta
Cool, gracias por la ayuda! –