Você tem duas opções aqui. A primeira é usar o
$where
operador. Collection.find( { $where: "this.start === this.end" } )
A segunda opção é usar a estrutura de agregação e o
$redact
operador. Collection.aggregate([
{ "$redact": {
"$cond": [
{ "$eq": [ "$start", "$end" ] },
"$$KEEP",
"$$PRUNE"
]
}}
])
O
$where
operador faz uma avaliação JavaScript e não pode tirar proveito dos índices, então consulte usando $where
pode causar uma queda de desempenho em seu aplicativo. Consulte considerações
. Se você usar $where, cada um de seus documentos será convertido de BSON para objeto JavaScript antes da operação $where, o que causará uma queda de desempenho. Claro que sua consulta pode ser melhorada se você tiver um filtro de índice. Além disso, há risco de segurança se você estiver construindo sua consulta dinamicamente com base na entrada do usuário. O
$redact
como o $where
não usa índices e nem mesmo executa uma varredura de coleção, mas o desempenho de sua consulta melhora quando você $redact
porque é um operador padrão do MongoDB. Dito isto, a opção de agregação é muito melhor porque você sempre pode filtrar seu documento usando o operador $match. $where
aqui é bom, mas poderia ser evitado. Também acredito que você só precisa de $where
quando você tem um problema de design de esquema. Por exemplo, adicionar outro campo booleano ao documento com índice pode ser uma boa opção aqui.