Obtenha o tamanho em bytes do documento na agregação

MalcolmOcean

Eu sei, Object.bsonsize()mas não tenho certeza se vai funcionar no meu caso. Desejo descobrir com eficiência quais usuários em meu aplicativo têm o maior número total de dados e tenho um pipeline de agregação que usa $lookuppara coletar todos os documentos do usuário (espalhados por 3 outras coleções) juntos. Em seguida, quero um estágio de pipeline que se pareça com:

$project: {
    "_id": 1,
    "username": 1, 
    "sizeInBytes": {
        $sizeInBytes: ...
    }
}

Eu sou muito novo em agregação, então não tenho certeza do que quero depois de sizeInBytes, para fazer referência a todo o documento, não apenas a uma propriedade.

Parece que talvez no MongoDB 4.0+, isso poderia ser feito usando $toStringe, $strLenBytesmas estou surpreso por não conseguir encontrar uma maneira integrada de fazer isso de forma muito mais direta. (E, infelizmente, estou preso em 3,6 atm)

buræquete

Infelizmente, mesmo com o MongoDB 4.0+, é muito complicado calcular o tamanho, como você especulou, o Stringcomprimento pode ser usado. um tíquete aberto pendente para um possível recurso futuro dentro do pipeline agregado.

Com o que você tem, sugiro usar Javascript no resultado do seu $lookupresultado.

Algo assim, por exemplo;

db.user.aggregate([
  {
    $lookup: {
      from: "doc1",
      localField: "userId",
      foreignField: "userId",
      as: "doc1arr"
    }
  },
  {
    $lookup: {
      from: "doc2",
      localField: "userId",
      foreignField: "userId",
      as: "doc2arr"
    }
  },
  {
    $lookup: {
      from: "doc3",
      localField: "userId",
      foreignField: "userId",
      as: "doc3arr"
    }
  }
]).map(perUserData => ({ userId: perUserData.userId, size: Object.bsonsize(perUserData) }));

vai dar algo parecido;

[
    {
        "userId" : 1,
        "size" : 250
    },
    {
        "userId" : 2,
        "size" : 350
    }
]

Veja a parte não-js em mongoplayground

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Obtenha o tamanho (em bytes) de um objeto na pilha

Obtenha o tamanho (em bytes) de um objeto na pilha

Obtenha o tamanho total do arquivo em bytes

Obtenha o tamanho do documento no Cosmos DB

PostScript. Obtenha o tamanho da página do documento

Como obter o tamanho do documento único mongodb em bytes usando nodejs?

Como obter o tamanho do documento único mongodb em bytes usando nodejs?

Obtenha o tamanho do arquivo em Swift

Obtenha um documento por intervalo na agregação elasticsearch

Obtenha o tamanho "otimista" do objeto gerenciado na memória

Obtenha o tamanho do gráfico em pixels em R

Obtenha o tamanho do cluster em sklearn em python

Obtenha o tamanho do bloco do sistema em Java

MS Word VBA: Obtenha o modelo em anexo do documento

O tamanho do caractere em Java 2 bytes não é?

obter o tamanho do arquivo enviado em bytes em php

Obtenha o tamanho do banco de dados MYSQL em Java

React: obtenha o tamanho do elemento em componentDidMount

Obtenha o tamanho do arquivo em MB ou KB

Obtenha o tamanho do widget tkinter em pixels

Obtenha o tamanho do arquivo da imagem em ferrugem

Obtenha o tamanho de uma matriz de cada documento em uma submatriz

Obtenha o tamanho de uma matriz de cada documento em uma submatriz

Obtenha o tamanho da String com codificação em bytes sem converter para byte []

Retornando o tamanho de um registro (em bytes) do OrientDB

Aumentando o tamanho do pacote em 2 bytes com scapy

Encontre o tamanho em bytes do arquivo pickle python

Calculando o tamanho do vetor de vetores em bytes

qual é o tamanho, em bytes, do quadro .NET UWP MediaFrameReference

TOP lista

  1. 1

    R Shiny: use HTML em funções (como textInput, checkboxGroupInput)

  2. 2

    O Chromium e o Firefox exibem as cores de maneira diferente e não sei qual deles está fazendo certo

  3. 3

    Como assinar digitalmente um documento PDF com assinatura e texto visíveis usando Java

  4. 4

    R Folheto. Dados de pontos de grupo em células para resumir muitos pontos de dados

  5. 5

    Gerenciar recurso shake de Windows Aero com barra de título personalizado

  6. 6

    Como obter dados API adequados para o aplicativo angular?

  7. 7

    UITextView não está exibindo texto longo

  8. 8

    Por que meus intervalos de confiança de 95% da minha regressão multivariada estão sendo plotados como uma linha de loess?

  9. 9

    Acessando relatório de campanhas na AdMob usando a API do Adsense

  10. 10

    Usando o plug-in Platform.js do Google

  11. 11

    Como posso modificar esse algoritmo de linha de visada para aceitar raios que passam pelos cantos?

  12. 12

    Dependência circular de diálogo personalizado

  13. 13

    Coloque uma caixa de texto HTML em uma imagem em uma posição fixa para site para desktop e celular

  14. 14

    iOS: como adicionar sombra projetada e sombra de traço no UIView?

  15. 15

    Como usar a caixa de diálogo de seleção de nomes com VBA para enviar e-mail para mais de um destinatário?

  16. 16

    Tabela CSS: barra de rolagem para a primeira coluna e largura automática para a coluna restante

  17. 17

    How to create dynamic navigation menu select from database using Codeigniter?

  18. 18

    Converter valores de linha SQL em colunas

  19. 19

    ChartJS, várias linhas no rótulo do gráfico de barras

  20. 20

    用@StyleableRes注释的getStyledAttributes。禁止警告

  21. 21

    não é possível adicionar dependência para com.google.android.gms.tasks.OnSuccessListener

quentelabel

Arquivo