MongoDBでは、$currentDate 演算子は、フィールドの値を現在の日付に設定します。
日付として設定できます またはタイムスタンプ タイプ。デフォルトは日付です 。
$currentDate 更新です 演算子であり、ドキュメントを更新する場合にのみ使用でき、挿入する場合には使用できません(ただし、アップサート操作では使用できます)。
例
dogsというコレクションがあるとします。 次のドキュメントで:
{
"_id" : 1,
"name" : "Wag",
"goodDog" : true,
"dateModified" : ISODate("2020-01-01T00:00:00Z")
}
そして、ドキュメントに変更を加えたいと思います。変更を加えるときは、dateModifiedを更新する必要があります 変更日までのフィールド。
したがって、$currentDateを使用できます 日付を現在の日付に設定する演算子。次のようなことができます:
db.dogs.update(
{ _id: 1 },
{
$currentDate: {
dateModified: true
},
$set: {
goodDog: false
}
}
)
ここでは、dateModified: trueを使用します 日付を使用して日付を設定するには タイプ(これは、日付として設定する簡単な方法です。 タイプ)。
コレクション/ドキュメントをもう一度確認することで、結果を確認できます:
db.dogs.findOne() 結果:
{
"_id" : 1,
"name" : "Wag",
"goodDog" : false,
"dateModified" : ISODate("2021-01-16T04:17:41.206Z")
}
dateModified フィールドが現在の日付(つまり、更新を実行した日時)に更新されました。 goodDog フィールドも指定どおりに更新されました。
タイムスタンプ
デフォルトでは、$currentDate 日付を使用します タイプ。または、ドキュメントでタイプを指定することもできます。したがって、{$type: timestamp}を使用できます 日付がタイムスタンプに更新されるようにします BSONタイプ。
例:
db.dogs.update(
{ _id: 1 },
{
$currentDate: {
dateModified: { $type: "timestamp" }
},
$set: {
goodDog: true
}
}
) この場合、タイムスタンプを指定したドキュメントを提供しました タイプ。
この方法は、日付にも使用できます。 タイプします(または前の例で見たように省略形の方法を使用します)。
コレクションを確認してください:
db.dogs.findOne() 結果:
{
"_id" : 1,
"name" : "Wag",
"goodDog" : true,
"dateModified" : Timestamp(1610771023, 1)
}