我在开始日期之间如何获取数据有一个问题,因为它只是字符串和这样的文档架构
"_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)吗?如何对我的收藏进行汇总?
答案 0 :(得分:3)
$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
}
});