我正在尝试找出最好的方法来获取与一周中给定日期匹配的所有文档。
例如,如果这是我的数据库的样子:
{name: "first", created: ISODate("2020-07-16T14:47:21.065+0000")},
{name: "second", created: ISODate("2020-07-23T14:47:21.065+0000")},
{name: "third", created: ISODate("2020-07-30T14:47:21.065+0000")},
{name: "forth", created: ISODate("2020-07-31T14:47:21.065+0000")}
我想获取在星期四创建的所有文档(这是前三个文档)。
我该如何实现?
还可以获取一周中特定日期和特定时间的所有文档吗?(例如:在星期四08:00-09:00之间创建的所有文档)
您可以使用$ dayOfWeek和$ hour之类的运算符进行聚合来轻松实现此目标,如下所示:
db.collection.aggregate([
{
$match: {
$expr: {
$and: [
{
$eq: [
{
$hour: "$created"
},
8/** only hour 8*/
]
},
{
$eq: [
{
"$dayOfWeek": "$created"
},
5/**thursday*/
]
}
]
}
}
}
])
该查询将匹配星期四8-9之间的所有文档。请注意,这不仅是过去一周,而且是所有以前的日期。如果您希望它在某个范围内(即仅当前星期),则需要向查询中添加另一个条件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句