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

MongoDB $ currentDate


No MongoDB, o $currentDate operador define o valor de um campo para a data atual.

Pode ser definido como uma Data ou um carimbo de data e hora tipo. O padrão é Data .

$currentDate é uma atualização operador, e só pode ser usado ao atualizar documentos, não ao inseri-los (embora possa ser usado em operações de upsert).

Exemplo


Suponha que tenhamos uma coleção chamada dogs com o seguinte documento:
{
	"_id" : 1,
	"name" : "Wag",
	"goodDog" : true,
	"dateModified" : ISODate("2020-01-01T00:00:00Z")
}

E queremos fazer uma alteração no documento. Quando fazemos a alteração, precisamos atualizar o dateModified campo até a data da alteração.

Portanto, podemos usar o $currentDate operador para definir a data para a data atual. Podemos fazer algo assim:
db.dogs.update( 
  { _id: 1 }, 
  {
    $currentDate: {
      dateModified: true
    },
    $set: {
      goodDog: false
    }
  }
)

Aqui, usamos dateModified: true para definir a data usando Data tipo (esta é uma forma abreviada de defini-lo como uma Data tipo).

Podemos verificar o resultado olhando a coleção/documento novamente:
db.dogs.findOne()

Resultado:
{
	"_id" : 1,
	"name" : "Wag",
	"goodDog" : false,
	"dateModified" : ISODate("2021-01-16T04:17:41.206Z")
}

Podemos ver que o dateModified campo foi atualizado para a data atual (ou seja, a data/hora em que executei a atualização). O goodDog campo também foi atualizado conforme especificado.

Carimbos de data e hora


Por padrão $currentDate usa a Data tipo. Você também pode especificar o tipo em um documento. Portanto, você pode usar {$type: timestamp} para que a data seja atualizada para um timestamp tipo BSON.

Exemplo:
db.dogs.update( 
  { _id: 1 }, 
  {
    $currentDate: {
      dateModified: { $type: "timestamp" }
    },
    $set: {
      goodDog: true
    }
  }
)

Nesse caso, fornecemos um documento que especificava o timestamp tipo.

Você também pode usar este método para a Data type (ou use o método abreviado como visto no exemplo anterior).

Confira a coleção:
db.dogs.findOne()

Resultado:
{
	"_id" : 1,
	"name" : "Wag",
	"goodDog" : true,
	"dateModified" : Timestamp(1610771023, 1)
}