mongodb 操作 Date字段类型 mongodb shell api

摘要:
1,试了好多种方法:原来一直以为可以直接用date类型的串就可以直接查询,比较,然而没鸟用!!!

一,环境

php 7.2 + thinkphp 5

mongodb 3.4

二,针对Date字段的操作

mongodb shell:

写入:

db.students3.insert([ { "_id" : 1, "tests" : [ 95, 92, 90 ], "lastUpdate" : ISODate("2019-01-01T00:00:00Z") }, { "_id" : 2, "tests" : [ 94, 88, 90 ], "lastUpdate" : ISODate("2019-01-01T00:00:00Z") }, { "_id" : 3, "tests" : [ 70, 75, 82 ], "lastUpdate" : ISODate("2019-01-01T00:00:00Z") } ]);

查询:

db.students3.find({"lastUpdate":{$gte:new Date('2019-01-01')}})

三,PHP如何像操作时间戳那样直接在DB中查询Date字段类型呢?

1,试了好多种方法:原来一直以为可以直接用date类型的串就可以直接查询,比较,然而没鸟用!!!

例如 :

$s = date('Y-m-d H:i:s',strtotime('2020-03-11'));

$e = date('Y-m-d H:i:s',strtotime('2020-03-12'));

$where['time'] = ['between',[$s,$e]]

Db::connect('MONGO')->table('students3')->where($where)->select();

这样是没有结构,mongo识别不了这样的时间字符串,不能像MYSQL那样可以直接比较date字段类型的。

2,用php自的什么Datetime类型的也都没用,要用mongodb类库中的 MongoDBBSONUTCDateTime这种转化才可以

$start= new MongoDBBSONUTCDateTime(strtotime("2020-03-11 00:40:34")*1000);
$end = new MongoDBBSONUTCDateTime(strtotime("2020-03-12 00:29:55")*1000);
$where['create_time'] = ['between',[$start,$end]];
$count = Db::connect('MONGO')->table('students3')->where($where)->count();

四,总结,之前没用过mongodb,纠结尝试了好久才可以正常操作Date类型的字段。

免责声明:文章转载自《mongodb 操作 Date字段类型 mongodb shell api》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇薄膜晶体管液晶显示器显示原理与设计台式机安装CentOS7.6 Minimal ISO系统并增加图形化桌面下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Oracle中的日期和字符串互相转换

转载出处:http://blog.sina.com.cn/s/blog_44a005380100k6rv.html TO_DATE格式(以时间:2007-11-02   13:45:25为例)            Year:              yy two digits 两位年                显示值:07         yyy...

NodeJs实现下载Excel文件

nodejs作为一门新的语言,报表功能也不是十分完善。 (1).js-xlsx: 目前 Github 上 star 数量最多的处理 Excel 的库,支持解析多种格式表格XLSX / XLSM / XLSB / XLS / CSV,解析采用纯js实现,写入需要依赖nodejs或者FileSaver.js实现生成写入Excel,可以生成子表Excel,功能强...

手把手教学在Springboot中搭建使用Guava cache,包教包会,不会我输一包辣条给你

 guava cache使用简介   概述   缓存是日常开发中经常应用到的一种技术手段,合理的利用缓存可以极大的改善应用程序的性能。   Guava官方对Cache的描述连接   缓存在各种各样的用例中非常有用。例如,当计算或检索值很昂贵时,您应该考虑使用缓存,并且不止一次需要它在某个输入上的值。   缓存ConcurrentMap要小,但不完全相同。最...

nodejs入门

目录: 一、关于nodejs   Node.js (http://nodejs.org/)是一个基于Chrome JavaScript 运行时建立的一个平台, 用来方便地搭建快速的, 易于扩展的网络应用。Node.js 借助事件驱动, 非阻塞 I/O 模型变得轻量和高效, 非常适合 run across distributed devices 的 data...

CentOS 6 使用 yum 安装MongoDB及服务器端配置

安装MongoDB的方法有很多种,可以源代码安装,在Centos也可以用yum源安装的方法。由于MongoDB更新得比较快,我比较喜欢用yum源安装的方法。64位Centos下的安装步骤如下: 1、准备工作 运行yum命令查看MongoDB的包信息[root@localhost~]#yuminfomongo-10gen (提示没有相关匹配的信息,) 说明你...

Elasticsearch(八)【NEST高级客户端--Mapping映射】

要使用NEST与Elasticsearch进行交互,我们需要能够将我们的解决方案中的POCO类型映射到存储在Elasticsearch中的反向索引中的JSON文档和字段。本节介绍NEST中可用的所有不同功能,使POCO和Elasticsearch变得轻而易举。 在Elasticsearch中显式映射文档对于为给定的问题域提供定制搜索解决方案至关重要。虽然E...