mongodb查询与范围中的值相反
我有一个mongoDB集合,里面有这样的数据mongodb查询与范围中的值相反,mongodb,Mongodb,我有一个mongoDB集合,里面有这样的数据 { start: "5.3", end: "8.10", owner: "guy1" } { start: "9.0", end: "14.5", owner: "guy2" } 假设我想知道谁得到了元素6.2。 我们可以看到,guy1得到了元素6.2,因为他拥有元素5.3到元素8.10 这是相反的 db.collection.find( { field: { $gt: value1, $lt:
{
start: "5.3",
end: "8.10",
owner: "guy1"
}
{
start: "9.0",
end: "14.5",
owner: "guy2"
}
假设我想知道谁得到了元素6.2。
我们可以看到,guy1得到了元素6.2,因为他拥有元素5.3到元素8.10
这是相反的
db.collection.find( { field: { $gt: value1, $lt: value2 } } );
字段指定开始和结束。提供的数据介于两个范围之间。
查找小于所需值的start最大值
如何查询 如果我理解正确,您可以使用运算符(将原始查询放入$not中),或者您知道这一点
not(x>a和x
等于xb
您可以使用query重写它否定逻辑,这应该可以:
db.collection.find( { start : { $lte : 6.2 }, end : { $gt : 6.2 } })
问题是您需要确保没有重叠的间隔,这可能很棘手,但这在应用程序级别是个问题。另外,请确保您没有将双精度存储为字符串,否则$gt
/$lt
查询将无法按预期工作,即确保您的数据如下所示:
{
start: 9.0,
end: 14.5,
owner: "guy2"
}
正如Michael所指出的,您还应该确保您的区间逻辑工作正常,因为有不同的方法可以定义区间包含。数学表示法是
)
与]
相比,但是对于浮点数的讨论变得更加复杂,其中最小ε的值有限制,这取决于数字本身的值……或者$gte
,或者两者都有——这取决于区间逻辑。。。例如,开始/结束相等是否意味着该特定值“包含”在间隔中?从数学上讲,半径为0的一维球体不包含任何内容,甚至连点本身也不包含,但我猜讨论超出了范围,因为OP没有提供关于这个问题的太多信息。