sql >> Database >  >> NoSQL >> MongoDB

Converteer datumverschil naar jaren om de leeftijd in MongoDB te berekenen

Update:MongoDB 5.0-oplossing, houdt ook rekening met schrikkeljaren

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

Update:we kunnen de aggregatie-operators gewoon combineren. Merk op dat deze oplossing geen nauwkeurig resultaat geeft omdat er geen rekening wordt gehouden met schrikkeljaren

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

Oude oplossing met $let

Ik heb het probleem kunnen oplossen met $let uitdrukking

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. Aanbevolen manier/plaats om index op MongoDB-verzameling te maken voor een webtoepassing

  2. Hoe het uurverschil tussen twee datums in mongodb te vinden

  3. Isodate converteren naar numerieke waarde

  4. GET req.query.name niet naar collection.find in express en MongoDB