J'essaie d'obtenir une liste de valeurs uniques du champ 'type' de ma collection mongodb. Exemples de documents ci-dessous:mongodb php obtenant des champs valeurs uniques
{
"_id" : ...,
"type" : "report",
"tasks" : ...
}
{
"_id" : ...,
"type" : "research",
"tasks" : ...
}
{
"_id" : ...,
"type" : "memo",
"tasks" : ...
}
{
"_id" : ...,
"type" : "memo",
"tasks" : ...
}
{
"_id" : ...,
"type" : "report",
"tasks" : ...
}
{
"_id" : ...,
"type" : "report",
"tasks" : ...
}
Je suis à la recherche, classés par ordre de fréquence, les types uniques qui sont dans le domaine du type des documents, donc:
["report", "memo", "research"]
Quelle est la meilleure façon de le faire ? Espérons que je peux le faire en questionnant avec mongo et non le téléchargement de la collection ...
Cette réponse devrait fonctionner. Juste quelques notes supplémentaires. Ce sera une requête lente sauf si 'type' est indexé. Même avec un index, vous allez essentiellement devoir «marcher» sur l'ensemble de l'indice. S'il s'agit d'une requête urgente, elle doit être configurée en tant que map-reduce et s'exécuter selon un planning. –
Gates VP a entièrement raison, soyez conscient des problèmes de performance. Une solution possible consiste à conserver un cache des comptes pour chaque valeur possible de «type» (en supposant que vous les avez dans une autre collection) et mettre à jour ce compteur chaque fois qu'un enregistrement est ajouté ou supprimé. Signifie un faible impact sur les performances lors de l'ajout/la suppression d'enregistrements, mais si vous avez besoin d'un accès fréquent à vos types et à vos comptes, vous gagnerez du temps à long terme. – Roadmaster
Oublié de dire merci, merci, c'est exactement ce que je voulais. +1 – Mark