MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Encontre registros do MongoDB onde o campo de matriz não está vazio


Se você também possui documentos que não possuem a chave, você pode usar:
ME.find({ pictures: { $exists: true, $not: {$size: 0} } })

O MongoDB não usa índices se $size estiver envolvido, então aqui está uma solução melhor:
ME.find({ pictures: { $exists: true, $ne: [] } })

Se sua propriedade pode ter valores inválidos (como null boolean ou outros), então você adiciona uma verificação adicional usando $types como proposto nesta resposta:

Com mongo>=3.2:
ME.find({ pictures: { $exists: true, $type: 'array', $ne: [] } })

Com mongo <3.2:
ME.find({ pictures: { $exists: true, $type: 4, $ne: [] } })

Desde o lançamento do MongoDB 2.6, você pode comparar com o operador $gt mas pode levar a resultados inesperados (você pode encontrar uma explicação detalhada nesta resposta):
ME.find({ pictures: { $gt: [] } })