sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB $currentDate

V MongoDB, $currentDate operátor nastaví hodnotu pole na aktuální datum.

Lze jej nastavit buď jako Datum nebo časové razítko typ. Výchozí nastavení je Datum .

$currentDate je aktualizace operátor a lze jej použít pouze při aktualizaci dokumentů, nikoli při jejich vkládání (ačkoli jej lze použít při operacích upsert).

Příklad

Předpokládejme, že máme sbírku nazvanou dogs s následujícím dokumentem:

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

A my chceme udělat změnu v dokumentu. Když provedeme změnu, musíme aktualizovat dateModified pole k datu změny.

Proto můžeme použít $currentDate operátora pro nastavení data na aktuální datum. Můžeme udělat něco takového:

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

Zde používáme dateModified: true a nastavte datum pomocí Datum typ (toto je zkrácený způsob nastavení jako Datum typ).

Výsledek můžeme ověřit opětovným pohledem na sbírku/dokument:

db.dogs.findOne()

Výsledek:

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

Vidíme, že dateModified pole bylo aktualizováno na aktuální datum (tj. datum/čas, kdy jsem spustil aktualizaci). goodDog pole bylo také aktualizováno, jak je uvedeno.

Časová razítka

Ve výchozím nastavení $currentDate používá Datum typ. Alternativně můžete zadat typ v dokumentu. Proto můžete použít {$type: timestamp} aby se datum aktualizovalo na časové razítko Typ BSON.

Příklad:

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

V tomto případě jsme poskytli dokument, který uváděl časové razítko typ.

Tuto metodu můžete použít také pro Datum typu (nebo použijte zkrácenou metodu, jak je vidět v předchozím příkladu).

Zkontrolujte sbírku:

db.dogs.findOne()

Výsledek:

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


  1. Jak zvýšit výkon operace aktualizace v Mongo?

  2. převést datum iso na časové razítko v dotazu mongo

  3. Jak vytvořit distribuovaný zámek s Redis?

  4. Chybová zpráva:MongoError:bad auth Ověření se nezdařilo prostřednictvím řetězce URI