sql >> Databasteknik >  >> NoSQL >> MongoDB

Hur ökar man korrekt många datum i mongoDB?

Börjar i Mongo 4.2 , db.collection.update() kan acceptera en aggregeringspipeline, vilket slutligen tillåter uppdatering av ett fält baserat på dess eget värde; på så sätt undviker ineffektiva hitta-/före-mönster.

Du tittade också på $inc operatör för att lägga till en dag, men nu när vi kan använda en aggregeringspipeline som en uppdatering, $add operator kan användas:

// { "date" : ISODate("2020-04-05T07:14:17.802Z"), "x" : "y" }
db.collection.updateMany(
  { date : { $exists : true } },
  [{ $set: { date: { $add: ["$date", 24*60*60000] } } }]
)
// { "date" : ISODate("2020-04-06T07:14:17.802Z"), "x" : "y" }
  • Den första delen { date : { $exists : true } } är matchningsfrågan som filtrerar vilka dokument som ska uppdateras (i vårt fall har alla dokument date fält).

  • Den andra delen [{ $set: { date: { $add: ["$date", 24*60*60000] } } }] är uppdateringsaggregationspipelinen (observera att hakparenteserna anger användningen av en aggregationspipeline). $set är en ny aggregeringsoperator och ett alias för $addFields . Då kan vilken aggregeringsoperator som helst användas inom $set skede; i vårt fall en enkel $add mellan det befintliga datumet och representationen av en dag i millisekunder.



  1. Fråga för att få senaste X-minutersdata med Mongodb

  2. kartläggning i skapa index i elasticsearch genom mongodb river får inte effekt

  3. Använda jedis hur man skriver till en specifik plats/nod i redis-kluster

  4. Hur använder man HSCAN-kommandot i Redis?