sql >> データベース >  >> NoSQL >> MongoDB

日付の差を年に変換して、MongoDBで年齢を計算します

    更新:MongoDB 5.0ソリューション、うるう年も考慮します

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

    更新:集計演算子を組み合わせることができます。このソリューションはうるう年を考慮していないため、正確な結果が得られないことに注意してください

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

    $letを使用した古いソリューション

    $letで問題を解決できました 式

    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. MongoDB Aggregation:個別のフィールドをカウントする

    2. Redisからのデータをマッピングする効率的な方法

    3. モジュール'../build/Release/bson']コードが見つかりません:'MODULE_NOT_FOUND'} js-bson:純粋なJSバージョンを使用してc++bson拡張機能を読み込めませんでした

    4. 条件付きの既存のフィールドからスコアを計算します