J'ai des documents enregistrés dans une collection (appelée urls
) qui ressemblent à ceci:MongoDB - match de regex de clés pour les sous-documents
{
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'
}
}
}
Utilisation du mongo CLI, est-il possible de rechercher des sous-documents de payload
que correspondre à /^url_/
? Et, si cela est possible, serait-il également possible d'interroger les sous-documents du match (par exemple, assurez-vous que text
existe)?
Je pensais quelque chose comme ceci:
db.urls.find({"payload":{"$regex":/^url_/}}).count();
Mais c'est de retour 0.
Toute aide ou suggestion serait formidable.
Merci,
Matt
Merci pour votre réponse. Malheureusement, je n'ai aucun contrôle sur la conception des documents qui sont insérés dans la collection:/ En outre, je ne suis pas sûr de ce que vous voulez dire quand vous dites un document incorporé? avez vous un lien? Est-ce la même chose qu'un sous-objet? –
Je pense que cela signifie la même chose que ce que vous appelez un "sous-objet". "Document incorporé" est un terme plus centré sur les données, alors que "sous-objet" est un terme plus centré sur la programmation (pour les langues où les documents Mongo sont exprimés en tant que hiérarchie d'objets). Si vous ne pouvez pas changer la structure des documents de votre collection, vous pouvez envisager d'utiliser map-reduce pour les réécrire dans un format plus interrogeable (comme celui que j'ai proposé ici) – dcrosta
Cool, merci pour l'aide! –