mongodb的一个小坑

来源:互联网 发布:网络连接没有本地连接 编辑:程序博客网 时间:2024/06/06 02:35

若collection里有其他的数据,显示时注意要往query里添加true,并且需要放在最前面。

解释:下图是名为test的collection里面的数据。可以看到上面5条是一样的数据,第6条是为了测试故意添加进去的。


首先,当你执行命令db.getCollection('test').find({},{"day":true}),结果如下。


很明显,没有day的第六条也出来了。当然有人会说,你这第一个条件为空,当然这样了(实际上这个分析是非常正确的)。是的,但是假如我再造一条数据刚好有day这个字段,但没有Price和time,这条数据对我来讲不像前4条数据一样有意义。为了筛选,可能需要执行以下的命令:db.getCollection('test').find({"day":{"$exists":true}},{"day":true})

这时结果如下:

那条叫aa,b的数据就被过滤掉了。

问题来了,当执行db.getCollection('test').find({"day":3,"day":{"$exists":true}})这条命令时,结果如下


你会发现"day":3这个条件根本不起作用,被屏蔽了。但当你换一个顺序,命令改为db.getCollection('test').find({"day":{"$exists":true},"day":3}),结果为想要的0,是不是很神奇。


0 0