作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
d-6ren">
当我想要 mongo AND 两个条件时,我得到的结果不一致。当我明确地 $and 他们时,一切都很好。
> db.test.insert({t:ISODate("2014-03-28")})
> db.test.find({t:ISODate("2014-03-28")})
{ "t" : ISODate("2014-03-28T00:00:00Z") }
孤立的条件,一切都很好:
> db.test.find({t:{"$lte":ISODate("2014-03-27")}})
> db.test.find({t:{"$gte":ISODate("2014-03-27")}})
{ "t" : ISODate("2014-03-28T00:00:00Z") }
> db.test.find({t:{"$gte":ISODate("2014-03-29")}})
> db.test.find({t:{"$lte":ISODate("2014-03-29")}})
{ "t" : ISODate("2014-03-28T00:00:00Z") }
这些工作正如您所期望的隐式“和”:
> db.test.find({t:{"$gte":ISODate("2014-03-27")},t:{"$lte":ISODate("2014-03-27")}})
> db.test.find({t:{"$lte":ISODate("2014-03-29")},t:{"$gte":ISODate("2014-03-29")}})
> db.test.find({t:{"$gte":ISODate("2014-03-27")},t:{"$lte":ISODate("2014-03-29")}})
{ "t" : ISODate("2014-03-28T00:00:00Z") }
> db.test.find({t:{"$lte":ISODate("2014-03-29")},t:{"$gte":ISODate("2014-03-27")}})
{ "t" : ISODate("2014-03-28T00:00:00Z") }
但是,这些行为就像“或”:
> db.test.find({t:{"$lte":ISODate("2014-03-27")},t:{"$gte":ISODate("2014-03-27")}})
{ "t" : ISODate("2014-03-28T00:00:00Z") }
> db.test.find({t:{"$gte":ISODate("2014-03-29")},t:{"$lte":ISODate("2014-03-29")}})
{ "t" : ISODate("2014-03-28T00:00:00Z") }
一切都按预期工作,无论顺序如何,都具有明确的“$and”“
> db.test.find({"$and": [{t:{"$lte":ISODate("2014-03-27")}},{t:{"$gte":ISODate("2014-03-27")}}]})
> db.test.find({"$and": [{t:{"$gte":ISODate("2014-03-27")}},{t:{"$lte":ISODate("2014-03-27")}}]})
> db.test.find({"$and": [{t:{"$gte":ISODate("2014-03-29")}},{t:{"$lte":ISODate("2014-03-29")}}]})
> db.test.find({"$and": [{t:{"$lte":ISODate("2014-03-29")}},{t:{"$gte":ISODate("2014-03-29")}}]})
对发生的事情有什么想法吗?
最佳答案
在您的表现得像“或”
的情况下,实际情况是每个对象只能有一个同名的键,因此只有第二个t
使用值。
关于Mongodb 不一致的隐式和/或,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22712636/
我是一名优秀的程序员,十分优秀!