MongoDB 是一种非关系型文档数据库,是一个可思想的 NoSQL 数据库,它具有优先的丰富的数据模型。日期查询对这类数据库而言十分重要,MongoDB 一样提供了优良的查询支持。本文我将为大家介绍 MongoDB 怎么实现日期查询的精彩实践,给大家提供一些参考。
既然谈及日期查询,我们肯定要一开始就去研究日期数据在 MongoDB 中的模型存储。了解日期数据是如何存储和使用的非常重要,以便于对日期数据进行查询,否则操作就会失去方向。通常 MongoDB 使用 ISODate 来存储日期,它接收一个秒或毫秒的整数,表示时间的字符串格式为:
ISODate("2020-03⑶1T23:59:59.999Z")
若要查询指定范围的日期,我们可使用以下代码:
db.collection.find({"date": { "$gte": ISODate("2020-01-01T00:00:00Z"), "$lt": ISODate("2020-03⑶1T23:59:59.999Z")}})
其中 `$gte` 为查询大于等于指定日期,而 `$lt` 则为查询小于指定日期,查询结果为 2020-03⑶1 之前的所有数据。
若要查询每个月第一天的数据,可使用下面的代码:
db.collection.find({"date": {"$gte": ISODate("2020-01-01T00:00:00Z"), "month": 1, "day": 1}})
这段代码的作用是查询 2020 年 1 月 1 日以后的所有数据,如果要查询本月的第一天,可使用下面代码:
var firstDay = new Date();
firstDay.setDate(1);db.collection.find({"date": {"$gte": firstDay, "year": firstDay.getFullYear(), "month": firstDay.getMonth() + 1, "day": 1}})
若要查询本月的最后一天,则需要用到 Date 对象的操作:
var lastDay = new Date();
var currentMonth = lastDay.getMonth();lastDay.setMonth(currentMonth + 1);
lastDay.setDate(0);db.collection.find({"date": {"$lte": lastDay, "year": lastDay.getFullYear(), "month": lastDay.getMonth() + 1, "day": lastDay.getDate()}})
最后,如果要实现日期范围查询,可使用 MongoDB 提供的内置函数 `$dateToString`:
db.collection.find({"date": {
"$gte": "$dateToString(ISODate('2020-01-01T00:00:00Z'),'%m-%d-%y')", "$lte": "$dateToString(ISODate('2020-03⑶1T00:00:00Z'),'%m-%d-%y')"
}})
该函数可以将日期格式化为字符串,方便后期查询操作。
以上为大家介绍的 MongoDB 日期查询精彩实践,不管是普通日期查询,或者范围查询,MongoDB 都有优良的支持。大家可以尝试自己实现一下,把这类精彩实践应用到实际利用中去,提升本身数据库的支持能力。
本文来源:https://www.yuntue.com/post/136582.html | 云服务器网,转载请注明出处!

微信扫一扫打赏
支付宝扫一扫打赏