我的Mongo
数据库中有两个日期字段,我想将它们的差异(即它们的“年龄”)与以年为单位的值进行比较。
例如:我想找到15岁以上的Pharmacies
。
(当前日期-建立日期)> 15(请注意CurrentYear
,因为它可能不是今天的日期)
该怎么做?
下面的一系列文档示例:
[
{
"Pharmacy": "a",
"EstablishedDate": ISODate("2006-10-12"),
"CurrentDate": ISODate("2018-07-17"),
"Medicine": [
{
"MedName": "MedA",
"Quantity": 55,
"Type": "Admission"
},
{
"MedName": "MedB",
"Quantity": 34,
"Type": "Admission"
},
{
"MedName": "MedD",
"Quantity": 25,
"Type": "Discharge",
}
]
},
{
"Pharmacy": "b",
"EstablishedDate": ISODate("2015-02-02"),
"CurrentDate": ISODate("2018-07-17"),
"Medicine": [
{
"MedName": "MedB",
"Quantity": 60,
"Type": "Critical"
},
{
"MedName": "MedC",
"Quantity": 34,
"Type": "mild"
}
]
}
]
答案 0 :(得分:2)
您可以使用日期时间运算符$year
提取年份。
类似
db.colname.find({"$expr":{
"$gt":[
{"$subtract":[
{"$year":"$CurrentDate"},
{"$year":"$EstablishedDate"}
]},
15
]
}})
答案 1 :(得分:1)
您可以尝试以下汇总
db.collection.aggregate([
{
"$redact": {
"$cond": [
{
"$lt": [
{
"$divide": [
{
"$subtract": [
"$CurrentDate",
"$EstablishedDate"
]
},
1000 * 60 * 60 * 24
]
},
365 * 15
]
},
"$$KEEP",
"$$PRUNE"
]
}
}
])
答案 2 :(得分:0)
请检查此汇总查询:
db.test.aggregate([
{
"$redact": {
"$cond": [{
"$gt": [{
"$divide": [{
"$subtract": ["$CurrentDate", "$EstablishedDate"] },
1000 * 60 * 60 * 24 * 365
]},
15
]},
"$$KEEP",
"$$PRUNE"
]
}
}
])
在这里,我们减去CurrentDate
和EstablishedDate
并找出它们之间的年差。如果大于15,则只有我们显示它们。
尝试一下,让我知道它是否对您有用。