MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Chuyển đổi chênh lệch ngày thành năm để tính tuổi trong MongoDB

Cập nhật:Giải pháp MongoDB 5.0, cũng sẽ xem xét các năm nhuận

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

Cập nhật:Chúng tôi chỉ có thể kết hợp các toán tử tổng hợp. Lưu ý rằng giải pháp này sẽ không cho kết quả chính xác vì nó không tính đến năm nhuận

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

Giải pháp cũ với $let

Tôi đã có thể giải quyết vấn đề với $let biểu thức

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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Chèn trường với kích thước mảng trong mongo

  2. Xử lý cách MongoDB lưu trữ DateTime khi được sử dụng với Mẫu định vị dịch vụ

  3. nhận giá trị tối đa trong mongoose

  4. Chi phí của Java ORM cho MongoDB là gì

  5. Nếu giá trị của một thuộc tính là null khi cập nhật thì thuộc tính đó sẽ không được thêm vào bản ghi