d-6ren">
gpt4 book ai didi

Mongodb 不一致的隐式和/或

转载 作者:行者123 更新时间:2023-12-02 04:32:37 25 4
gpt4 key购买 nike

当我想要 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com