Menu Docs
Página inicial do Docs
/
Manual do MongoDB
/ / /

Nomes de campos com pontos

Nesta página

  • Inserir um nome de campo com um ponto
  • Consultar um campo que tenha um período
  • Atualizar um campo que contém um período
  • Saiba mais

Esta seção aborda como inserir, executar queries em e atualizar documentos com nomes de campo que contêm um ponto.

Para inserir um documento que contenha um nome de campo com um ponto, coloque o nome do campo entre aspas.

O seguinte comando insere um documento que contém um nome de campo price.usd:

db.inventory.insertOne(
{
"item" : "sweatshirt",
"price.usd": 45.99,
"quantity": 20
}
)

Para executar query de um campo que tenha um período, use o operador $getField .

A consulta a seguir retorna documentos em que o campo price.usd é maior que 40:

db.inventory.find(
{
$expr:
{
$gt: [ { $getField: "price.usd" }, 40 ]
}
}
)
[
{
_id: ObjectId("66145f9bcb1d4abffd2f1b50"),
item: 'sweatshirt',
'price.usd': 45.99,
quantity: 20
}
]

Se você não usar $getField, o MongoDB tratará o nome do campo com ponto como um objeto incorporado. Por exemplo, a query a seguir corresponde a documentos em que um campo usd dentro de um campo price é maior que 40:

db.inventory.find( {
"price.usd": { $gt: 40 }
} )

A query anterior corresponderia a este documento:

{
"item" : "sweatshirt",
"price": {
"usd": 45.99
},
"quantity": 20
}

Para atualizar um campo que tenha um ponto final, use um pipeline de agregação com o operador $setField .

A seguinte operação define o campo price.usd como 29.99:

db.inventory.updateOne(
{ "item": "sweatshirt" },
[
{
$replaceWith: {
$setField: {
field: "price.usd",
input: "$$ROOT",
value: 29.99
}
}
}
]
)

Se você não usar $setField, o MongoDB tratará o nome do campo com um ponto como um objeto incorporado. Por exemplo, a operação a seguir não atualiza o campo price.usd existente e, em vez disso, insere um novo campo usd, incorporado dentro de um campo price:

db.inventory.updateOne(
{ "item": "sweatshirt" },
{ $set: { "price.usd": 29.99 } }
)

Resultado do documento:

[
{
_id: ObjectId("66145f9bcb1d4abffd2f1b50"),
item: 'sweatshirt',
'price.usd': 45.99
quantity: 20,
price: { usd: 29.99 }
}
]

Para obter mais exemplos de atualizações com pipelines de agregação, consulte Atualizações com pipeline de agregação.

Voltar

Sinais de dólar