Como o operador de $ filtro é usado no MongoDB
O operador $ filtro do MongoDB é usado para filtrar os dados da matriz de acordo com a declaração condicional fornecida. O uso do operador $ filtro trabalha nos documentos que são inseridos na coleção especificada de MongoDB. Aqui, implantamos a consulta InsertMany () de MongoDB para inserir três documentos na coleção "Cricket". Cada registro contém três campos - "_id", "Player" e o "RunsRecord" - que são definidos como uma matriz. O formato de inserção de documentos é representado no seguinte:
dB.Grilo.InsertMany ([
"_id": 1,
"Jogador": "Ravi",
"RunsRecord": [100, 50, 70],
"Partidas" :
"Match1": "WorldCup",
"Ano": "2000"
,
"_id": 2,
"Jogador": "Andrew",
"RunsRecord": [150, 90, 55]
,
"_id": 3,
"Jogador": "Smith",
"RunsRecord": [80, 99, 45]
,
"_id": 4,
"Jogador": "Alex",
"RunsRecord": []
])
Os documentos da coleção "Cricket" são inseridos com sucesso, conforme mostrado na seguinte saída:
reconhecido: verdadeiro, inserdIds: '0': 1, '1': 2, '2': 3, '3': 4
Exemplo 1: MongoDB usa o operador $ filtro em MongoDB
O operador básico de $ filtro do exemplo do MongoDB é fornecido nesta seção. Estabelecemos uma consulta em que o operador de projeto $ é chamado no método agregado. Invocamos o operador de $ filtro dentro do operador de projeto $. O operador $ filtro é mais especificado com seu parâmetro. O parâmetro "Entrada" é definido com o nome do campo "$ runsrecord" com o sinal "$" para extrair os dados dele. Em seguida, usamos o parâmetro "AS" para dar o título à variável de retorno "RunSRecord". Essa variável é então referida usando o parâmetro "cond" com o sinal de dólar duplo, "$$". Em seguida, é o parâmetro "cond" em que a expressão é atribuída como "$ gt: [" $$ runsrecord ", 50]". As condições implicam que o operador "$ GT" recebe o elemento da matriz, que é maior que o valor de "50" no campo de matriz "RunsRecord".
dB.Grilo.agregar([
$ projeto:
Highruns:
$ filtro:
entrada: "$ runsrecord",
AS: "RunsRecord",
cond: $ gt: ["$$ runsrecord", 50]
]))
Os resultados da consulta $ filtro seguinte retornam apenas os valores da matriz que é maior "50". O valor menor que "50" é ignorado pelo operador $ filtro.
[[
_id: 1, Highruns: [100, 70],
_id: 2, Highruns: [150, 90, 55],
_id: 3, Highruns: [80, 99],
_id: 4, Highruns: []
]
Exemplo 2: MongoDB usa o operador $ filtro para filtrar o campo de inexistência
Agora, tomamos um caso em que o operador de filtro $ é aplicado ao campo que não está presente em nenhum documento de coleção inserido. Aqui, temos uma consulta em que o operador $ filtro é empregado com os parâmetros. O parâmetro de entrada é definido com o campo "$ salário" para filtrar o documento. Em seguida, utilizamos o parâmetro opcional "AS", que também é dado com o nome da variável, "Salário", que é usado na matriz de entrada como um elemento. Depois disso, temos uma expressão condicional no parâmetro "cond" do $ filtro. O operador $ filtro filtra o elemento da matriz com base na condição especificada que é "$ GTE: [" $$ Salário ", 6000]".
dB.Grilo.agregar([
$ Match: _id: $ in: [2]
,
$ projeto:
Highruns:
$ filtro:
entrada: "$ salário",
AS: "Salário",
cond: $ gte: ["$$ salário", 6000]
]))
Como sabemos, o campo "Salário" fornecido não está presente no documento cujo "_id" é "2", portanto a saída da consulta anterior do operador $ filtro fornece um valor nulo.
[_id: 2, Highruns: null]
Exemplo 3: MongoDB usa o operador $ filtro para filtrar a matriz vazia
Em seguida, é o cenário em que o $ FILTER é empregado sobre a matriz vazia. O operador $ filtro retorna um conjunto de matrizes vazios se um dos documentos da coleção tiver uma matriz vazia. Temos a seguinte consulta de operador de filtro $. Temos o operador $ Match primeiro onde a expressão “_id: $ in: [4]” é fornecida para ser satisfeita. Quando o $ em operador encontra o valor de "4" no campo "_id", o próximo operador prossegue. Em seguida, temos um operador de filtro $ que filtra a matriz de elementos com base na condição dada que é "$ gt: [" $$ runsrecord ", 45]".
dB.Grilo.agregar([
$ Match: _id: $ in: [4]
,
$ projeto:
Highruns:
$ filtro:
entrada: "$ runsrecord",
AS: "RunsRecord",
cond: $ gt: ["$$ runsrecord", 45]
]))
O "_id: 4" tem o campo "RunsRecord" que está vazio. É por isso que quando a consulta é executada, ela gera a matriz vazia da seguinte forma:
[_id: 4, Highruns: []]
Exemplo 4: MongoDB usa o operador $ filtro em MongoDB com o nome da variável opcional
Estabelecemos um título para a variável nas instâncias anteriores usando o argumento "AS". Se o argumento "AS" não for definido com nenhum nome de variável, a variável "$ this" será definida por padrão por MongoDBB. Vamos fazer o exemplo de consulta para esta afirmação. Combinamos o documento chamando o operador $ match, onde temos um campo "_id" no qual os valores são definidos. Atribuímos um operador de $ filtro ao operador "$ Project", onde o operador de $ filtro é chamado com os parâmetros. Aqui, temos um parâmetro de "entrada" com o nome do campo de matriz "$ runsrecord". Em seguida, aplicamos o parâmetro "cond" com a condição especificada. A condição é definida como "cond: $ lt: [" $$ th This ", 80]". Desta vez, o operador $ LT é usado para encontrar o valor que é menor que o valor de "80". Observe que, em vez de um nome de variável "$$ runsrecord", usamos o nome da variável padrão "$$ th This" aqui que não afeta a saída resultante.
dB.Grilo.agregar([
$ Match: _id: $ in: [1, 2, 3, 4]
,
$ projeto:
Highruns:
$ filtro:
entrada: "$ runsrecord",
cond: $ lt: ["$$ th This", 80]
]))
O operador $ filtro filtra a matriz especificada com a $ esta variável da mesma maneira que com a variável especificada.
[[
_id: 1, Highruns: [50, 70],
_id: 2, Highruns: [55],
_id: 3, Highruns: [45],
_id: 4, Highruns: []
]
Exemplo 5: MongoDB usa o operador $ filtro para filtrar com várias condições
Podemos fornecer mais de uma condição ao operador $ filtro para filtrar apenas os documentos que correspondem à condição fornecida. Aqui, definimos o operador $ filtro, onde o $ e o operador são usados no parâmetro "cond". O $ e o operador são definidos com várias condições como "$ gte: [" $$ runsrecord ", 45]" e "$ lte: [" $$ runsRecord ", 99]". O $ e o operador são usados que exigem ambas as condições como verdadeiras.
dB.Grilo.agregar([
$ projeto:
Highruns:
$ filtro:
entrada: "$ runsrecord",
AS: "RunsRecord",
cond: $ e: [
$ GTE: ["$$ runsRecord", 45],
$ LTE: ["$$ runSrecord", 99]
]
]))
Com as múltiplas condições, filtramos o documento correspondente no seguinte:
[[
_id: 1, Highruns: [50, 70],
_id: 2, Highruns: [90, 55],
_id: 3, Highruns: [80, 99, 45],
_id: 4, Highruns: []
]
Conclusão
Exploramos este artigo, que é sobre o operador $ filtro do MongoDB. Aqui, fornecemos a implementação do script do MongoDB do operador $ filtro para filtrar os dados especificados. Primeiro demonstramos o uso básico do operador $ filtro. Em seguida, usamos o operador $ filtro sobre o documento cujo campo não é adicionado no documento. A caixa de campo de matriz vazia também é implantada no operador $ filtro, que recupera a matriz vazia. Além disso, o operador $ filtro é usado com a $ esta variável, que é a variável padrão.