mongodb的一个小坑

若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,是不是很神奇。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值