企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持知识库和私有化部署方案 广告
1.字段只有是数值型才可以使用比较运算符.mongo是强类型数据库,底层没有做转换,如果要借助其提供的api,则必须保证数据格式是原生正确 2.任何数据类型的字段均可以排序 3.万一出现导入的数据格式不对导致筛选功能无法完成,可以使用mongo shell 脚本执行.更换字段类型 脚本可以直接在navicat for mongo  里使用查询语句执行. 脚本语法基本同js一样包括大部分函数和对象 4.在使用PHP进行读取Mongo数据时,如果读取的int数据过大时,会自动转变为int64位。并会报以下错误: **Cannot natively represent the long 8331412483000 on this platform ** 只要在需要的地方添加代码:ini\_set(‘mongo.long\_as\_object‘, 1);  引言 本文主要讲解Mongodb的类型转换。包括:string转double, string转int, string转Date。 0\. 出现类型不一致的原因 ES导入数据到Mongo后,会出现类型统一改为String的问题。  传统关系型数据库,在设计表处,右键就可以完成修改表类型。  但是非关系型数据库,没有这种实现。只有通过命令行操作实现。  验证表明,可以通过如下的接口进行修改。 1、Mongodb类型转换接口 复制代码 //string转为double类型 db.law.find().forEach( function (x) {   x.state = parseFloat(x.state);   db.law.save(x); }); //string转为int类型 db.law.find().forEach( function (x) {   x.ise= NumberInt (x.ise);   db.law.save(x); }); //string转化为date类型 db.law.find().forEach( function (x) {  x.eift = new ISODate(x.eift);   db.law.save(x); }); 复制代码 2、类型转换一键脚本实现 复制代码 \[root@Node-C6 mongo\_process\]# cat ./mongo\_uopdate.sh #!/bin/sh mongo data <<\\EOF db.law.find().forEach( function (x) {   x.state = parseInt(x.state);   x.id= NumberInt(x.id);  x.eift = new ISODate(x.eift);  x.ctime = new ISODate(x.ctime );  x.pt= new ISODate(x.pt);   db.law.save(x); }); EOF 复制代码 3、执行成功标记 \[root@Node-C6 mongo\_process\]# ./mongo\_uopdate.sh MongoDB shell version: 3.2.7 connecting to: data bye