【发布时间】:2018-12-25 00:20:52
【问题描述】:
我的Mongo 数据库中有两个日期字段,我想将它们的差异(即它们的“年龄”)与一个值(以年为单位)进行比较。
例如:我想查找 15 岁以上的 Pharmacies。
(CurrentDate - EstablishDate) > 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"
}
]
}
]
【问题讨论】:
-
您可以使用聚合管道及其
$subtract运算符:docs.mongodb.com/manual/reference/operator/aggregation/subtract -
docs.mongodb.com/manual/reference/operator/query/expr 在查找查询中使用聚合表达式。附带说明一下,将 CurrentDate 作为文档的属性是非常不寻常的。无法想象不同文档的时间流向不同的用例。
-
@AlexBlex 是的,CurrentDate 具有误导性。将其视为一个绝对比药房旧的日期字段。如果它使事情更清楚,我会改变它。
-
那么你的意思是我们需要找到“EstablishedDate”大于“CurrentDate”的药店吗?
-
不,我需要(当前日期 - 已建立日期)> 15。我会用这个更新我的问题。
标签: node.js mongodb mongodb-query