Tengo un documento de etiqueta que se parece a
{ name: 'tag', title: 'Tag', type: 'document', fields: [ { name: 'label', title: 'Label', type: 'string', } ] }Y el documento de página que parece
{ name: "page", title: "Page", type: "document", fields: [ { name: "title", title: "Title", type: "string", }, { name: "tags", title: "Tags", type: "array", of: [{ type: "reference", to: [{ type: "tag" }] }], } ] }Y otro documento de artículo que parece
{ name: "article", title: "Article", type: "document", fields: [ { name: "title", title: "Title", type: "string", }, { name: "description", title: "Description", type: "text", }, { name: "tags", title: "Tags", type: "array", of: [{ type: "reference", to: [{ type: "tag" }] }], } ] }No puedo averiguar cómo obtener las etiquetas con el mayor número de referencias utilizadas en páginas y artículos.
Una extensión de esta pregunta sería obtener las 10 etiquetas más utilizadas en todo el sitio.
He estado luchando por un tiempo ahora. Cualquier ayuda sería apreciada.
gracias equipo
Es probable que pueda lograr esto construyendo una consulta que primero obtenga todas las tags y luego use la función de count para filtrarlas aún más. Algo como lo siguiente:
*[_type == 'tag'] { ..., 'totalReferences': count(*[_type in ['page', 'article'] && references(^._id)) } | order(totalReferences desc) [0...10]Sin embargo, esto puede no ser muy eficaz en conjuntos de datos muy grandes.