mongodb - 获取字符串日期之间的数据 MongoDB
问题描述
我有一个问题如何在开始日期之间获取数据,因为它只是字符串,而我的文档架构是这样的
"_id" : ObjectId("5ab92bdd6fbcd28fb0c68ff6"),
"username" : "jumbreng",
"startdate" : "26-03-2018",
"enddate" : "11-08-2018",
"status" : 1
我一直在尝试像这样创建聚合
db.presensi.aggregate( [ {
$project: {
"username": "$username",
"startdate": {
$dateFromString: {
dateString: '$startdate',
}
},
"enddate" :{
$dateFromString: {
dateString: '$enddate',
}
}
}
} ] )
但我不知道如何使它具有像 find($lte 和 $gte) 这样的范围,我应该将此聚合更新到我的集合吗?然后我可以创建语句 find($lte 和 $gte)?如何聚合到我的收藏?
解决方案
$dateFromString聚合运算符可以帮助您。
试试看:
db.user.aggregate(
// Pipeline
[
// Stage 1
{
$project: {
_id: true,
startdate: true,
enddate: true,
status: true,
username: "$username",
isBetween: {
$and: [{
$lt: [{
$dateFromString: {
dateString: '$startdate',
}
}, {
$dateFromString: {
dateString: '27-03-2018',
}
}]
}, {
$gt: [{
$dateFromString: {
dateString: '$startdate',
}
}, {
$dateFromString: {
dateString: '25-03-2018',
}
}]
}]
}
}
},
// Stage 2
{
$match: {
"isBetween": true
}
},
], {
cursor: {
batchSize: 50
}
});
推荐阅读
- r - 列名意外更改为 V1
- android-studio - Android studio中如何增加代码行的宽度?
- python - immobilienscout24 执行两条腿 OAuth Python
- javascript - 当我们按下按钮时,进度条会增加
- android - 应用程序崩溃时 Firebase 消息服务是否会关闭?
- python - 在优先可行排序中获取有向无环图的预处理器和后继者
- c# - WPF PasswordChanged 属性未检测到退格删除
- c - 在 C 中使用 for 循环绘制图案
- php - PHP Oauth 在 PHP 7.3 上获得 401,在 PHP 7.2 及更早版本上正常
- android-studio - Flutter 中的热重启:何时何地?