MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB NOW Променлива за агрегиране

MongoDB предоставя NOW системна променлива, която ви позволява да получите текущата стойност за дата и час, когато използвате конвейер за агрегиране.

Това може да бъде полезно, когато искате да актуализирате документ с текущата дата и час.

Започвайки от MongoDB 4.2, методите за актуализиране могат да приемат конвейер за агрегиране. Следователно, NOW може да се използва като алтернатива на $currentDate полеви оператор за актуализиране за настройка на текущата дата и час при използване на някой от методите за актуализиране.

За достъп до NOW системна променлива, добавете пред нея два знака за долар и я оградете в кавички ("$$NOW" ).

Пример

Да предположим, че имаме колекция, наречена dogs който съдържа следния документ:

{ "_id" : 1, "name" : "Fetch", "weight" : 25 }

Ето пример за използване на NOW системна променлива при актуализиране на този документ:

db.dogs.updateOne(
  { _id : 1 },
  [
    { $set : { weight : 30, lastModified : "$$NOW" } }
  ]
)

Сега нека да разгледаме отново документа:

db.dogs.find( { _id: 1 } ).pretty()

Резултат:

{
	"_id" : 1,
	"name" : "Fetch",
	"weight" : 30,
	"lastModified" : ISODate("2021-01-27T01:29:32.833Z")
}

lastModified полето е добавено с обект Date, който съдържа текущата дата и час.

Има и CLUSTER_TIME системна променлива, която връща текущото времеви печат, въпреки че това е достъпно само за набори от реплики и разчленени клъстери.

Също така имайте предвид, че NOW и CLUSTER_TIME стойностите остават същите в целия конвейер.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MySQL към MongoDB - Admin Cheat Sheet

  2. Изграждане на mongo-cxx-driver с помощта на CMake ExternalProject_Add

  3. Проверете дали полето съществува с MongoDB

  4. MongoDB $degreesToRadians

  5. Има ли конвенция за именуване на колекция в MongoDB?