我在“food”模式-mongodb中很少有这样的数据记录
{
"_id": "5b220199acbec1409cbf84dd",
"Name": "Mongo",
"ID_No": "BA1233",
"Content": "Bottle",
"No_packages": 5,
"No_items": 6,
"Qty": 30,
"Mfg": "2018-05-27",
"Exp": "2018-06-30",
"__v": 0
}
我想获取日期差(Exp-today Date)小于30的数据集。 我使用以下命令尝试了它。但没有成功。
db.food.find({$lt: { $subtract: [ Date() , Exp ],"30"}} )
最佳答案
您需要先使用 $dateFromString
(aggregation)
将日期从字符串转换为日期格式,然后 $redact (aggregation)
消除不匹配的文档
db.collection.aggregate([
{ "$addFields": {
"date": {
"$dateFromString": {
"dateString": "$EXP"
}
}
}},
{ "$redact": {
"$cond": [
{ "$lt": [
{ "$divide": [
{ "$subtract": [new Date(), "$date"] },
1000 * 60 * 60 * 24
]},
30
]},
"$$KEEP",
"$$PRUNE"
]
}}
])
关于node.js - 将字符串转换为日期并获取差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50862096/