Operador MongoDB $ SETONININSERT

Operador MongoDB $ SETONININSERT
O método update () do MongoDB fornece vários operadores para atualizar os valores do documento. A partir desses operadores, vamos explorar o operador $ setoninsert. O operador $ setoninsert em MongoDB executa uma operação de inserção e atualização quando o sinalizador upsert é aplicado com a função update (). Quando a opção UpSert é especificada com o valor verdadeiro e um documento é inserido, apenas o operador $ SETONININSERT insere um campo durante a operação de atualização. O operador $ setoninsert não tem impacto no caso em que a função não adiciona um documento.

Como o operador $ setoninsert funciona em MongoDB

O operador $ SETONININSERT do MongoDB executa as operações de atualização () que têm a bandeira UpSert, o que implica que essa operação apenas insere dados. Para iniciar a operação do operador $ SETONININSERT, precisamos criar a coleção MongoDBB. Aqui, intitulamos a coleção como "Colção dos Trabalhadores" e inserimos alguns documentos nesta coleção. Para inserir os documentos nas “Cercolções de Works”, a consulta InsertMany do MongoDB é implantada, que insere a maior parte do documento ao mesmo tempo. A consulta de múltiplas inserções de documentos em "WorkersCollection" é representada no seguinte:

dB.Colção dos trabalhadores.insertone (
"ID": 1,
"Nome": "Bella",
"Idade": 31,
"Salário": 50000,
"Altura": 6.5,
"Jornada de trabalho" :
"Dia": "8hrs",
"Noite": "5hrs"
,
"Detalhes" :
"City": "NewYork",
"Telefone": "0842888123"

,

"ID": 2,
"Nome": "Kevin",
"Idade": 29,
"Salário": 45000,
"Altura": 5.9,
"Jornada de trabalho" :
"Dia": "6hrs",
"Noite": "3hrs"
,
"Detalhes" :
"City": "Houston",
"Telefone": "8329423099"

,

"ID": 3,
"Nome": "Steven",
"Idade": 34,
"Salário": 39000,
"Altura": 6.4,
"Jornada de trabalho" :
"Dia": "9hrs",
"Noite": "2hrs"
,
"Detalhes" :
"Cidade": "Califórnia",
"Telefone": "812373002"

)

Quando os documentos da coleção fornecida são inseridos com sucesso, a seguinte saída é obtida no shell MongoDB:


reconhecido: verdadeiro,
inserdId: objectId ("63B56A6707E9102DCADCF96A")

Exemplo 1: Usando o operador $ setoninsert para inserir o novo documento

Já inserimos três documentos na coleção MongoDB, “WorkersCollection”. Agora, podemos adicionar um novo documento na mesma coleção com o operador $ SETONININSERT. Temos a seguinte consulta em que usamos o método update () para especificar a expressão "id": 4 ". Em seguida, empregamos o operador "$ setoninsert" para definir os campos "idade" e "salário" com os novos valores que não existem no documento. Depois disso, aplicamos a bandeira do UpSert com o valor "verdadeiro". Primeiro, o novo documento é criado com o "id": 4. Em seguida, o operador $ setoninsert atribui os valores ao campo correspondente do novo documento.

dB.Colção dos trabalhadores.update ("id": 4, $ setoninsert: "Age": 35, "Salário": 40000, upSert: true);

A execução da consulta anterior do UpSert retorna a saída que é mostrada na seguinte demonstração. Os Writesults possuem a opção UpSerTedCount, que tem o valor de "1", indicando que o documento é dividido na coleção.


reconhecido: verdadeiro,
inserdId: objectId ("63B56CCA378B59E68E0C4608"),
MatchedCount: 0,
ModifiedCount: 0,
UPSERTEDCOUNT: 1

Exemplo 2: Usando o operador $ setoninsert para inserir os novos campos incorporados em um novo documento

O operador $ SETONININSERT também é usado para o documento incorporado. Podemos utilizar o operador $ SETONININSERT com a função Update () e a opção UpSert, que é atribuída a True. Aqui está uma representação da consulta para inserir o novo documento incorporado em nossa "Colção dos Trabalhadores". Empregamos o método update () onde definimos os detalhes “.Cidade ":" Chicago " expressão primeiro. Em seguida, aplicamos o operador $ SETONININSERT, onde os campos incorporados, “Trabalhando.Dia "e" trabalho de trabalho.Noite ”, são definidos com novos valores. A opção UpSert também está definida com o valor verdadeiro para atualizar o documento incorporado.

dB.Colção dos trabalhadores.atualização ("detalhes.Cidade ":" Chicago ",
$ setoninsert: "WorkingHours.Dia ":" 5hrs "," Working Hours.Noite ":" 5HRS ", upSert: true)

O WriterSultion na saída a seguir indica que o upsertedCount é 1, o que significa que a operação anterior é bem -sucedida.


reconhecido: verdadeiro,
inserdId: objectId ("63B584D4378B59E68E0C4B36"),
MatchedCount: 0,
ModifiedCount: 0,
UPSERTEDCOUNT: 1

Exemplo 3: Usando o operador $ setoninsert para atualizar o documento

Há outro caso do operador $ SETONININSERT do MongoDBB. Os exemplos anteriores usaram o operador $ SETONININSERT para inserir o novo documento. Agora, neste caso de MongoDB, usamos o operador $ SETONININSERT para atualizar o documento que já está presente na coleção “WorkersCollection”. Aqui, temos uma consulta Update () que define a condição que atualiza o documento cujo valor de campo "ID" é "2". Quando o documento é comparado, a próxima operação é realizada onde usamos os $ set e $ Setoninsert Operadores. O operador $ SET é especificado com o valor em relação aos campos "idade" e "altura". Em seguida, o operador $ setoninsert é implantado para inserir o campo de nome com o valor "Carle" no documento existente. No final, atribuímos o valor verdadeiro à opção UpSert para operar.

dB.Colção dos trabalhadores.atualizar(
"id": 2,

$ set: idade: 40, altura: 5.7,
$ setoninsert: name: "Carle"
,
upsert: true
)

O documento é atualizado com sucesso e a saída a seguir é mostrada com o valor da opção upSertCount, que está definido como true:


reconhecido: verdadeiro,
inserdId: 2,
MatchedCount: 0,
ModifiedCount: 0,
UPSERTEDCOUNT: 1

Exemplo 4: Usando o operador $ setoninsert para atualizar o documento sem operação UpSert

Em seguida, temos um caso do operador $ SETONININSERT, onde o documento é correspondido e modificado, mas não há resultados de upsert. Fornecemos a consulta em que atualizamos o documento usando o método update (). O método update () é implementado com a operação em que a expressão é atribuída primeiro e o campo "ID" tem o valor de "1". Depois disso, invocamos o operador $ set para modificar os campos especificados e o operador $ SETONININSERT para definir o campo "Nome" com o novo valor que é "Alex". O valor verdadeiro upsert é atribuído após o $ SETONININSERT Operator.

dB.Colção dos trabalhadores.atualizar(
id: 1,

$ set: Salário: 60000, altura: 4.98,
$ setoninsert: name: "Alex"
,
upsert: true
)

Podemos ver que o MatchedCount e o ModifiedCount estão definidos com o valor de "1". O upSertCount tem um valor "zero" que indica que a operação UpSert não é executada e o nome do "campo" não é atualizado.


reconhecido: verdadeiro,
inserdId: nulo,
MatchedCount: 1,
ModifiedCount: 1,
UPSERTEDCOUNT: 0

Exemplo 5: Usando o operador $ setoninsert para o documento correspondente

Em seguida, é a operação do operador $ SETONININSERT para verificar se esse operador funciona corretamente com o documento correspondente. O operador $ SETONININSERT é ineficaz com os documentos já existentes. Vamos ter a seguinte consulta onde temos o operador $ SETONININSERT dentro do método update (). O operador $ setoninsert define os campos incorporados, "City" e "Phone", com o valor que já está presente no documento. Aqui, a operação UpSert simplesmente ignora o operador $ SETONININSERT porque os valores especificados já estão localizados no documento.

dB.Colção dos trabalhadores.Update ("Name": "Kevin",
$ setoninsert: "detalhes.Cidade ":" Houston ",
"Detalhes.Telefone ":" 8329423099 ",
upsert: true)

Os resultados acabaram de reconhecer o documento correspondente. A operação UpSert falhou neste caso, como visto no seguinte:


reconhecido: verdadeiro,
inserdId: nulo,
MatchedCount: 1,
ModifiedCount: 0,
UPSERTEDCOUNT: 0

Conclusão

Demonstramos sobre o operador MongoDB $ SETONININSERT. Aprendemos a usar este operador com consultas MongoDB. O operador $ setoninsert é aplicado no método update () para aumentar o documento novo ou especificado. A possível ilustração de casos é fornecida neste artigo, no qual inserimos o novo documento e o novo documento incorporado com a ajuda do operador $ SEtonInsert. Depois disso, chamamos o operador $ SETONININSERT para atualizar o documento já presente e o documento correspondente.