在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=; $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

mongodb中数据类型的坑的更多相关文章

  1. MongoDB中的一些坑( 2.4.10 版本)

    http://www.jb51.net/article/62654.htm 1.MongoDB 数据库级锁 MongoDB的锁机制和一般关系数据库如 MySQL(InnoDB), Oracle 有很大 ...

  2. MongoDB中的一些坑(最好不要用)

    MongoDB 是目前炙手可热的 NoSQL 文档型数据库,它提供的一些特性很棒:如自动 failover 机制,自动 sharding,无模式 schemaless,大部分情况下性能也很棒.但是薄荷 ...

  3. MongoDB中的数据类型

    mongoDB中存储的数据单元被称作文档.文档的格式与JSON很类似,只不过由于JSON表达的数据类型范围太小(null,boolean,numeric,string和object),mongoDB对 ...

  4. Python 入门之数据类型之间的相互转换 以及 在编程中会遇到的数据类型的坑

    Python 入门之数据类型之间的相互转换 以及 在编程中会遇到的数据类型的坑 1.数据类型总结: 可变,不可变,有序,无序 (1)可变的数据类型:list dict set (2)不可变的数据类型: ...

  5. MongoDB 之 数据类型 最无聊! But 最有用! MongoDB - 3

    MongoDB的新篇章开始啦 - 数据类型 https://www.cnblogs.com/xuzhaocai/p/8048177.html 一.MongoDB 之 丰富多彩的数据类型世界 首先我们要 ...

  6. 3,MongoDB之数据类型

    一.MongoDB 之数据类型 首先我们要先了解一下MongoDB中有什么样的数据类型: Object  ID :Documents 自生成的 _id String: 字符串,必须是utf-8 Boo ...

  7. 在MongoDB中实现聚合函数 (转)

    随着组织产生的数据爆炸性增长,从GB到TB,从TB到PB,传统的数据库已经无法通过垂直扩展来管理如此之大数据.传统方法存储和处理数据的成本将会随着数据量增长而显著增加.这使得很多组织都在寻找一种经济的 ...

  8. 使用highcharts显示mongodb中的数据

    1.mongodb数据表相关 # 显示数据库 show dbs # 数据库 use ceshi # 显示表 show tables # 创建集合 db.createCollection('infoB' ...

  9. MongoDB中的MapReduce介绍与使用

    一.简介 在用MongoDB查询返回的数据量很大的情况下,做一些比较复杂的统计和聚合操作做花费的时间很长的时候,可以用MongoDB中的MapReduce进行实现 MapReduce是个非常灵活和强大 ...

随机推荐

  1. [Math]Reverse Integer

    Total Accepted: 111287 Total Submissions: 474471 Difficulty: Easy Reverse digits of an integer. Exam ...

  2. Ubuntu系统下创建python数据挖掘虚拟环境

    虚拟环境:   虚拟环境是用于创建独立的python环境,允许我们使用不同的python模块和版本,而不混淆.   让我们了解一下产品研发过程中虚拟环境的必要性,在python项目中,显然经常要使用不 ...

  3. ASP.NET MVC 中@html.ActionLink的几种参数格式

    一 Html.ActionLink("linkText","actionName") 该重载的第一个参数是该链接要显示的文字,第二个参数是对应的控制器的方法, ...

  4. keepalived 安装和配置

    第一步:安装 yum -y install keepalived 第二步:配置 /etc/keepalived/keepalived.conf ! Configuration File for kee ...

  5. requirejs--源码分析

    /*---------------------------------------start-------------------------------*/ req({}); // num == 1 ...

  6. Nginx 配置指令的执行顺序(九)

    紧接在 server-rewrite 阶段后边的是 find-config 阶段.这个阶段并不支持 Nginx 模块注册处理程序,而是由 Nginx 核心来完成当前请求与 location 配置块之间 ...

  7. MDX基础

    第一章 看了本书的第一章,总体一个印象,废话真多.话不多说:整理书中知识点,实践出真理! 知识点:MDX语法:简单的函数介绍; 首先语法网上流传的很多,读者应该具备cube(多维数据集)的知识基础,我 ...

  8. Oracle EBS-SQL (INV-10):检查库存接口.sql

    /*检查库存接口表*/ select msi.segment1                            项目编码, msi.description                     ...

  9. Android网络编程之Http通信

    Android中提供的HttpURLConnection和HttpClient接口可以用来开发HTTP程序.以下是本人在学习中的总结与归纳.1. HttpURLConnection接口    首先需要 ...

  10. Asp.Net构架(Http请求处理流程)、Asp.Net 构架(Http Handler 介绍)、Asp.Net 构架(HttpModule 介绍)

    转载: HttpHaddler,HttpModule http://blog.csdn.net/jiuqiyuliang/article/details/18713451 http://www.cnb ...