今天在使用mongoDB高级查询$type:符号 -- 4代指Array类型发现一个问题。
$type符号:
$type操作符是基于BSON类型来检索集合中匹配的数据类型,并返回结果。
下面是mongoDB可使用类型参照表,图来自mongoDB菜鸟教程。
我使用的是mongoDB shell version是2.6.10版本比较老,不能使用insertOne/Many,deleteOne/Many等这些新方法。
因此下了个可视化工具robomongodb,这是官方下载地址:https://robomongo.org/download,一般下载windows版就行。
下面附一下,怎么链接你的Linux:
1.先解压到桌面,顺便给大家展示下我的北极星小姐姐
2.运行这个图标:放大再放大,还是很可爱的@·@
3.接下来的next,遇到填的当作没看见,最后finish。
4.接下来会看到这个界面,上面是我的已经连上的。请忽略下面两个鬼花狐是Connection和Cancel
5.打开你的linux VMware ,确保输入mongo可以进入,mongodb的环境安装太复杂就不一一介绍,
一般去公司也是装好的。
6.假设VMware上有了,下面输入ifconfig这条命令,如果你也比较懒,请输入if后Tab键,看到你的host记住
7.找到这个配置文件mongod.conf,输入这个命令:whereis mongodb,我的会看到/etc/mongodb.conf,
但不需要ta,在同目录下(/etc)有个mongod.conf长的太像了,接着输入命令:sudo vim /etc/mongod.conf,
找到下面有个ip127.0.0.1改成0.0.0.0,vim命令要是不熟subline打开改一下就行,保存关闭。
8.最后,打开robo看上面这个图上面的蓝色小字create,到下面的界面,起个名,
输入刚记住的ip,点test测试下就连接上了。
下面到正题,待会用上面的可视化工具插入以下数据(假如你玩熟了这个工具,so easy的!):
点你创建的collections中的表,右侧会出现一个输入框改为:db.你的表名.insertMany([中间插入下面的代码])
可适当调下缩进美观。数据有了,下面重启窗口把刚刚那个表名点两下,输入框输入语句:db.你的表名.find({readings:{$type:4}})
>>>输入只有两条数据是符合Array,_id为1和3的,虽然,这5条数据的类型都是array,但是按照例子结果导向是列表的嵌套,
此处易与之前所知的list和array混淆。
{ "_id": 1, "readings": [ 25, 23, [ "Warn: High Temp!", 55 ], [ "ERROR: SYSTEM SHUTDOWN!", 66 ] ] }, { "_id": 2, "readings": [ 25, 25, 24, 23 ] }, { "_id": 3, "readings": [ 22, 24, [] ] }, { "_id": 4, "readings": [] }, { "_id": 5, "readings": 24 }
以上是mongoDB官网实例,英文文档,中文文档没有这个例子。
https://docs.mongodb.com/manual/reference/operator/query/type/
>>>补充一下:刚上面截图我有两个ip链接着,下面是我的阿里云服务器,如果你有阿里云服务器的话,连接也是很容易的,
只需要在你的阿里云控制台安全组设置mongoDB的端口号,因为你是外部连接阿里云所以需要把这个27017端口加入进去。
具体操作不会的可以留言哦~。~