MongoDB 是一种 NoSQL 数据库,因其高性能、高可扩展性和灵活性已经成为了现代 Web 技术中一个非常流行的后端数据库。而对于一个 Web 开发人员来说,对 MongoDB 中的 time/date 数据类型也是需要掌握的一项基本技能。
Date 数据类型简介
在 MongoDB 中,存储日期和时间类型使用的是 BSON 格式的 64 位整型,所以日期时间值在存储时是按照 GMT(格林威治标准时间)格式存储的。可以通过 JavaScript Date 对象和 ISODate() 函数来创建 MongoDB 中的 Date 对象,例如:
var mydate = new Date(); db.mycollection.insert({ mydatefield: mydate});
也可以直接使用 ISO 格式存储日期,例如:
db.mycollection.insert({ mydatefield: ISODate("2019-12-31T00:00:00.000Z") });
时间查询语法
MongoDB 针对时间进行了特殊的查询操作,例如在查询普通数据时用到的运算符(<,>,=)都可以用于时间查询。除此之外,MongoDB 还提供了独有的时间查询运算符。
等于($eq)
db.mycollection.find({ mydatefield: { $eq: ISODate("2019-12-31T00:00:00.000Z") } })
大于($gt)
db.mycollection.find({ mydatefield: { $gt: ISODate("2019-12-31T00:00:00.000Z") } })
小于($lt)
db.mycollection.find({ mydatefield: { $lt: ISODate("2019-12-31T00:00:00.000Z") } })
大于等于($gte)
db.mycollection.find({ mydatefield: { $gte: ISODate("2019-12-31T00:00:00.000Z") } })
小于等于($lte)
db.mycollection.find({ mydatefield: { $lte: ISODate("2019-12-31T00:00:00.000Z") } })
范围查询($gt 和 $lt)
db.mycollection.find({ mydatefield: { $gt: ISODate("2019-12-30T00:00:00.000Z"), $lt: ISODate("2020-01-01T00:00:00.000Z") } })
不等于($ne)
db.mycollection.find({ mydatefield: { $ne: ISODate("2019-12-31T00:00:00.000Z") } })
总结
在 MongoDB 中时间查询的操作是非常重要的,需要牢记以上的语法知识和实现例子。同时,可以将时间查询和其他的查询语句混合使用,比如与 $and 和 $or 等逻辑运算符搭配使用以实现更加复杂的查询操作。熟练掌握 MongoDB 中时间日期存储和查询操作,能在开发 Web 应用时,更好地来支持业务数据的存储和查询操作。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6533ae227d4982a6eb73e527