mongodb中数据类型的坑_weixin_33827965的博客-程序员秘密

技术标签: 数据库  

在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

 

转载于:https://www.cnblogs.com/xs-yqz/p/6064757.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33827965/article/details/94023862

智能推荐

效率编程 之「创建和销毁对象」_创建和销毁变量耗费时间马_CG国斌的博客-程序员秘密

温馨提示:本系列博文(含示例代码)已经同步到 GitHub,地址为「java-skills」,欢迎感兴趣的童鞋Star、Fork,纠错。第 1 条:考虑用静态工厂方法代替构造器类可以提供一个公有的静态工厂方法,它只是一个返回类的示例的静态方法。例如,public static Boolean valueOf(boolean b) { return b ? Boole...

ROS利用仿真摄像头识别并抓取物体(一)_tutu_321的博客-程序员秘密

ROS利用仿真摄像头识别物体在机械臂URDF文件中添加仿真摄像头、桌子和物体。运行launch文件启动gazebo。roslaunch prrobot_gazebo probot_anno_with_gripper_gazebo_world.launch运行结果如下图所示:接下来运行以下python程序对绿色物体进行识别#!/usr/bin/env python# -*- codin...

Android实习——06_Pandora_417的博客-程序员秘密

Fragment碎片生命周期:新建一个碎片onAttach()onCreate()onCreateView() &lt;___________onActivityCreated()onStart()onResume()碎片已激活onPause()onStop()onDestroyView()__________&gt;onDestroy()onDetach()Adap...

三、DMSP/OLS夜间灯光数据校正一相互校正、饱和校正_dmsp数据预处理_端木宛白的GIS课堂的博客-程序员秘密

DMSP由于多代传感器,每一代传感器之间存在重叠年份,且未完成星上辐射校正,DN值存在异常情况。对其的预处理主要解决年份重叠、DN值异常、灯光饱和等问题,要完成相互校正、连续性校正、饱和校正。当从NOAA官网下载好夜间灯光数据之后,选择稳定灯光数据——找到名为F182013.v4c_web. stable_lights. avg_vis 的 tif格式数据,其他年份以此类推。校正的主要原因是:OLS传感器获取数据的时候会受到地表起伏、大气折射、植被遮挡等以及每一代传感器之间的差异等,此外该卫星并未进

ssh出错 sign_and_send_pubkey: signing failed: agent refused operation_changhenshui1990的博客-程序员秘密

在服务器添加完公钥之后,ssh服务器然后报了这个错误sign_and_send_pubkey: signing failed: agent refused operation然后执行了以下命令才好。。eval "$(ssh-agent -s)"ssh-add

python版本、3.8无法安装TensorFlow_big__apple的博客-程序员秘密

python版本python3.8和3.7现在博主下载使用的是3.7版本。以前用过3.8和另外两个版本(忘记了,其中一个是盗版,非官网下载的)上一个版本是3.8,因为3.8有一些功能仍然在bugfix,像TensorFlow这个库也不能下载,影响一些功能的使用,所以最后决定把版本换一下,回到稳定3.7。版本关于版本问题,并不是越新越好,而是尽量稳定,让自己在运行时减少问题,稳定是最好的,不然一个脚步出来,许多问题因为版本原因查个半天就不是很开心了。所以尽管3.9已经出来了,建议大家不要着急选择最

随便推点

群接龙拼团小程序开发_uniapp接龙_云起SAAS的博客-程序员秘密

通过线上支付的订单的所得,可以通过申请提现的方式,后台审核,提现到自己的账户。每一个接龙订单的商品接龙数量都会在订单页面详细展示,方便发布者查看统计数量。每条接龙的详情页面会按照时间最近依次显示参与接龙的订单数据,刺激用户参与。创建接龙,即可上传商品,包括商品名称,介绍,定价等数据。发布接龙支持订单线上微信支付(发布接龙勾选线上支付)用户端可以管理自己参与的接龙或者发布的接龙订单数据。通过小程序可以自定义创建接龙,无需复杂的申请流程。接龙链接分享,用户进来即可一键接龙。群接龙拼团小程序开发。...

线性表_冥更的博客-程序员秘密

线性表是由同一类型的数据元素构成的有序序列的线性结构, 线性表中元素的个数称为线性表的长度。线性表中元素的前一个元素叫做当前元素的直接前驱;后一个元素叫做当前元素的直接后继。线性表的顺序储存线性表的顺序存储指的是内存中使用地址连续的一块存储空间顺序存放线性表的各元素。一般利用一维数组来表示顺序存储的数据区域,同时需要用一个Last变量来记录当前线性表中最后一个元素在数组中的位置,所以通常...

Android音视频开发之ExoPlayer(一):快速入门ExoPlayer_exoplayer版本_PYJTLK的博客-程序员秘密

初识ExoPlayerExoPlayer是Google推出的一种多媒体播放器框架,支持本地音视频的播放,同时网络视频也是支持的。快速上手首先,把ExoPlayer的库导进来。注意,这里使用的ExoPlayer版本是2.16.1,其他版本在初始化ExoPlayer上会略有区别,大家可以参看说明文档。android { ... compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targ

IP地址总结_10.10.10.5_傻月菇凉的博客-程序员秘密

IP地址分类IP地址的编码分为两部分:网络号和主机号。A类地址默认子网掩码:255.0.0.0;B类地址默认子网掩码:255.255.0.0;C类地址默认子网掩码:255.255.255.0;D类默认子网掩码:255.255.255.255。IP地址中A类主机地址最长,栈24位,可分配2&amp;amp;nbsp;24&amp;amp;nbsp;−2&amp;amp;nbsp;224−2 2^{24}-2个地址。B类占16位,可分...

01-HTML基础_ruyu00的博客-程序员秘密

一、HTML概述1、HTML:超文本标记语言注:(1)静态网页的扩展名:.html、.htm(2)动态网页的扩展名:.asp、.jsp、.aspx、.php2、HTML标签不区分大小写,但建议小写。所有内容都使用标签完成,不是标签的,浏览器会作为纯文本来解析(HTML解析引擎中只认标签)注:(1)标签与标签之间是可以嵌套的,但先后顺序必须保持一致(2)操作思想:对数...

【刷题 issue7】程序员代码面试指南 —— IT 名企算法与数据结构题目最优解_peabits的博客-程序员秘密

第一章 栈和队列1.7 生成窗口最大值数组【题目】一个整形数组 arr 和 一个大小为 w 的窗口从数组的最左边滑到最右边,窗口每次向右边滑一个位置。如果数组长度为 n,窗口大小为 w,则一共产生 n-w+1 个窗口的最大值。请实现一个函数:输入:整形数组 arr,窗口大小为 w。输出:一个长度为 n-w+1 的数组 res,res[i] 表示每一个窗口状态下的最大值。【难度】...