Adicionar um campo de pesquisa
Nesta página
Os campos de pesquisa permitem criar um chart que une dados de várias coleções no mesmo banco de dados. Um campo de pesquisa traz documentos de uma segunda coleção cujos valores correspondem a um campo na fonte de dados principal do seu gráfico.
Os campos de pesquisa são úteis para aproveitar os relacionamentos de chave principal/filho e chave primária/chave estrangeira entre as coleções, ou qualquer situação em que um campo em uma coleção referencia um campo em outra coleção. Os campos de pesquisa usam $lookup para recuperar documentos correspondentes de uma coleção remota.
Criar um novo campo de pesquisa
Você pode criar um campo de pesquisa a partir de qualquer campo na fonte de dados do seu gráfico que não seja umobjeto incorporado e que contenha dados correspondentes com um campo em outra coleção. A coleção remota deve ser:
Uma fonte de dados de Gráficos existente.
Parte do mesmo banco de dados da collection local.
Observação
Você também pode usar a coleção local como uma fonte de campo de pesquisa.
Para adicionar um campo de pesquisa, passe o mouse sobre um campo existente e clique no ellipsis (...) à direita do nome do campo. Selecione Lookup field no menu suspenso. Uma janela modal é exibida:
Selecione a coleção e o campo desejados nos menus suspensos. O campo remoto deve conter pelo menos um documento com dados que correspondam ao campo local, ou o campo de pesquisa estará vazio.
Você tem a opção de devolver todos os documentos correspondentes da coleção estrangeira ou somente o primeiro documento correspondente. A devolução de todos os documentos correspondentes é recomendada para relacionamentos de um para muitos, como relacionamentos pai/filho e de chave primária. Devolver somente o primeiro documento é recomendado para relacionamentos um para um e muitos para um, como códigos de dados de referência. Se você deseja retornar apenas o primeiro documento correspondente, verifique o botão de opção Return only first matching document.
O Charts sugere um nome para o novo campo, mas você pode inserir um nome de sua preferência, se preferir. Clique em Save para criar o novo campo.
O novo campo aparece com um ícone binoculars, indicando que é um campo de pesquisa.
Importante
Certifique-se de que qualquer campo usado como campo de pesquisa esteja adequadamente indexado. As operações de pesquisa em um campo não indexado em uma coleção grande podem causar problemas significativos de desempenho ou tempos limite.
Para remover um campo de pesquisa do seu painel de campo, passe o mouse sobre o campo de pesquisa e clique em ellipsis (...) à direita do nome do campo. Selecione Remove field no menu suspenso.
Exemplo
O exemplo a seguir usa duas fontes de dados, uma chamada product_catalog
e outra chamada orders
.
A coleção product_catalog
contém os seguintes documentos:
{ "_id" : 76234, "item" : "21 inch monitor" } { "_id" : 38921, "item" : "USB C cable" } { "_id" : 21167, "item" : "keyboard" } { "_id" : 90252, "item" : "60 GB external hard drive" }
A coleção orders
contém os seguintes documentos:
{ "_id" : 1, "sku": 38921, "quantity": 50 } { "_id" : 2, "sku": 21167, "quantity": 75 } { "_id" : 3, "sku": 76234, "quantity": 15 } { "_id" : 4, "sku": 21167, "quantity": 20 }
Os registros na coleção orders
utilizam o campo sku
para referenciar o campo _id
na coleção product_catalog
.
O objetivo é criar um gráfico de colunas mostrando o número de itens pedidos. O seguinte gráfico utiliza orders
como sua fonte de dados. O campo de pesquisa sku_lookup_product_catalog
é criado a partir do campo orders.sku
. Ele usa a coleção product_catalog
como sua fonte de dados remota e product_catalog._id
como seu campo remoto.
O gráfico usa product_catalog.item
como seu eixo X e orders.quantity
como seu eixo Y.