sql >> Database teknologi >  >> NoSQL >> MongoDB

Hvordan øger man rigtig mange datoer i mongoDB?

Starter i Mongo 4.2 , db.collection.update() kan acceptere en aggregeringspipeline, som endelig tillader opdatering af et felt baseret på dets egen værdi; dermed undgå ineffektive find/foreach-mønstre.

Du så også på $inc operatør for at tilføje en dag, men nu hvor vi kan bruge en aggregeringspipeline som en opdatering, er $add operator kan bruges:

// { "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ørste del { date : { $exists : true } } er matchforespørgslen, der filtrerer hvilke dokumenter der skal opdateres (i vores tilfælde har alle dokumenter date felt).

  • Den anden del [{ $set: { date: { $add: ["$date", 24*60*60000] } } }] er opdaterings-aggregeringspipeline (bemærk de firkantede parenteser, der angiver brugen af ​​en aggregeringspipeline). $set er en ny aggregeringsoperator og et alias for $addFields . Så kan enhver aggregeringsoperator bruges i $set scene; i vores tilfælde en simpel $add mellem den eksisterende dato og repræsentationen af ​​en dag i millisekunder.



  1. Mongodb samlet sortering og begrænsning inden for gruppen

  2. MongoDB insertMany()

  3. BSON bibliotek til java?

  4. Hvordan bruger man sadd med flere elementer i Redis ved hjælp af Python API?