sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB $ fecha actual

En MongoDB, el $currentDate El operador establece el valor de un campo en la fecha actual.

Se puede configurar como una fecha o una marca de tiempo tipo. El valor predeterminado es Fecha .

$currentDate es una actualización operador, y solo se puede usar al actualizar documentos, no al insertarlos (aunque se puede usar en operaciones upsert).

Ejemplo

Supongamos que tenemos una colección llamada dogs con el siguiente documento:

{
	"_id" : 1,
	"name" : "Wag",
	"goodDog" : true,
	"dateModified" : ISODate("2020-01-01T00:00:00Z")
}

Y queremos hacer un cambio en el documento. Cuando hacemos el cambio, necesitamos actualizar el dateModified campo hasta la fecha del cambio.

Por lo tanto, podemos usar el $currentDate operador para establecer la fecha a la fecha actual. Podemos hacer algo como esto:

db.dogs.update( 
  { _id: 1 }, 
  {
    $currentDate: {
      dateModified: true
    },
    $set: {
      goodDog: false
    }
  }
)

Aquí, usamos dateModified: true para establecer la fecha usando la Fecha tipo (esta es una forma abreviada de configurarlo como una Fecha tipo).

Podemos verificar el resultado mirando de nuevo la colección/documento:

db.dogs.findOne()

Resultado:

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

Podemos ver que el dateModified el campo se ha actualizado a la fecha actual (es decir, la fecha/hora en que ejecuté la actualización). El goodDog el campo también se ha actualizado como se especifica.

Marcas de tiempo

Por defecto $currentDate utiliza la fecha tipo. También puede especificar el tipo en un documento. Por lo tanto, puede usar {$type: timestamp} para que la fecha se actualice a una marca de tiempo tipo BSON.

Ejemplo:

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

En este caso, proporcionamos un documento que especificaba la marca de tiempo tipo.

También puede usar este método para la Fecha escriba (o use el método abreviado como se ve en el ejemplo anterior).

Consulta la colección:

db.dogs.findOne()

Resultado:

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