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

Chcete-li vypočítat věk v MongoDB, převeďte rozdíl data na roky

Aktualizace:Řešení MongoDB 5.0 bude zvažovat i přestupné roky

db.collection.aggregate([
  { $addFields:
    { age: { $dateDiff: { startDate: "$dob", endDate: "$$NOW", unit: "year" } } }
  }
])

Aktualizace:Můžeme pouze kombinovat agregační operátory. Upozorňujeme, že toto řešení neposkytuje přesné výsledky, protože nezohledňuje přestupné roky

db.getCollection('person').aggregate( [ { 
    $project: { 
        date:"$demographics.DOB", 
        age: { 
            $divide: [{$subtract: [ new Date(), "$Demographics.DOB" ] }, 
                    (365 * 24*60*60*1000)]
        } 
     } 
} ] )

Staré řešení s $let

Problém se mi podařilo vyřešit pomocí $let výraz

db.getCollection('person').aggregate( [ { 
    $project: { 
        item: 1, 
        date:"$demographics.DOB", 
        age: { 
            $let:{
                vars:{
                    diff: { 
                        $subtract: [ new Date(), "$demographics.DOB" ] 
                    }
                },
                in: {
                    $divide: ["$$diff", (365 * 24*60*60*1000)]
                }
            }
        } 
     } 
} ] )


  1. nelze spustit kontejner mongoDb v dockeru pro Windows pomocí souborového systému linux

  2. Nativní NodeJS + Mongo – před dotazem zkontrolujte, zda kolekce existuje

  3. 'process.nextTick(function() { throw err; })' - Nedefinováno není funkce (mongodb/mongoose)

  4. Jak obejít nedostatek transakcí v MongoDB?