• mongodb中数据类型的坑


    在mongodb中,我们给每个文档插入数据的时候,mongodb自动会为我们插入的数据创建数据类型。由于mongodb是一个非结构化的数据存储系统,因此在文档中你可以随意插入不同类型的字段,这和MySQL有很大的区别(MySQL是结构化类型存储,要求对应的字段的数据类型相同)。在mongodb的图形化管理页面,来看看数据库中字段所对应的数据类型。

    由于有数据类型的存在,这就要求我们在使用的mongodb查询的时候需要注意一些情况了。例如在通过form_id 查询一些数据时就应该注意。我们从上面可以看出,form_id 是一个整型,因此我们在使用mongodb查询的时候就应该注意传给form_id的数据应该为一个整型数据。

    例如,我在使用数组进行查询的时候,就犯了这个错误。

           $form_id_arr = explode(',', $form_id);
            var_dump($form_id_arr);
            //explode()处理之后,数组中的值为字符串类型,但是mongodb中对于数据的类型十分的严格,form_id 对应的类型为整型,因此数组中的值也要转换成整型
            for ($i=0; $i <count($form_id_arr) ; $i++) { 
                $form_id_arr[$i] = intval($form_id_arr[$i]);
            }
            var_dump($form_id_arr);

    假如我从前台获取的form_id 是一个字符串 ”99,98,97,96“ 如果直接使用explode() 进行转换成数组,再去查询,其实是错误的,因为数组中存入的是数字字符串,不是一个整型的数据。

    在此强烈建议利用var_dump()函数来进行变量的打印,它能够打印出每个数据的类型。

    我分别在for循环处理之前与之后分别进行了打印。

    看一下打印的结果。

    可以很明显的发现,转换之后的数组才是我查询所需要的数组。

    end

  • 相关阅读:
    java logging 配置文件
    oracle exception使用
    java keytool 用法
    【转】ant学习笔记之(ant执行命令的详细参数和Ant自带的系统属性)
    [转]Ivy入门学习
    关于java.nio.Buffer的API
    如何查看LINUX操作系统是多少位的
    Linux cpio命令的使用
    window.open()使用参考
    【原创】个人站点建设(待续)
  • 原文地址:https://www.cnblogs.com/xs-yqz/p/6064757.html
Copyright © 2020-2023  润新知