zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    9多线程与异步
    5文件操作
    3C#面向对象概念
    2初步了解C#类与对象
    7Linq查询语言
    6字符编码
    8网络请求之http
    1初步了解C#语言基础
    4C#格式处理
    WPF及Silverlight中将DataGrid数据导出 南京酷得软件
  • 原文地址:https://www.cnblogs.com/xs-yqz/p/6064757.html
Copyright © 2011-2022 走看看