【发布时间】:2018-08-01 05:08:36
【问题描述】:
我有一个包含两个字段的集合,类似于下面的一个:
{ 年份: 2017, 月:04 }
如何选择 2017/07 - 2018/04 之间的文档?
【问题讨论】:
我有一个包含两个字段的集合,类似于下面的一个:
{ 年份: 2017, 月:04 }
如何选择 2017/07 - 2018/04 之间的文档?
【问题讨论】:
首先,您必须确保您的数据库 以 ISO 格式存储日期(mongo 支持的格式)
您可以使用以下命令查找文档:-
model.find({
date:{
$gte:ISODate("2017-04-29T00:00:00.000Z"),
$lte:ISODate("2017-07-29T00:00:00.000Z"),
}
})
其中模型是集合的名称,日期是一个属性 ISO 格式的文档保存日期。
【讨论】:
解决方法:
db.collection.aggregate(
// Pipeline
[
// Stage 1
{
$addFields: {
"date": {
"$dateFromParts": {
"year": "$year",
"month": {"$toInt": "$month"}
}
}
}
},
// Stage 2
{
$match: {
"date": {
"$gte": ISODate("2017-07-01T00:00:00.000Z"),
"$lte": ISODate("2018-04-30T00:00:00.000Z")
}
}
},
]
);
【讨论】: