NoSQL中的多个不等式条件(范围查询)

时间:2010-06-17 12:52:08

标签: mongodb couchdb datastore nosql

我有一个应用程序,我想使用NoSQL数据库,但我仍然希望对两个不同的属性进行范围查询,例如选择时间T1和T2之间的所有条目,其中noiselevel小于X 。另一方面,我想使用NoSQL / Key-Value存储,因为我的数据非常稀疏且多样化,我不想为我可能遇到的每种新数据类型创建新表。

我知道您无法为Google数据存储区使用多个不等式过滤器(source)。我也知道这个功能即将到来(根据this) 我知道这在CouchDB中是不可能的(source)。

我想我也或多或少地理解为什么会这样。

现在,这让我想知道.. 所有NoSQL数据库都是这种情况吗?其他NoSQL系统是否可以通过两个不同的属性进行范围查询?

例如,Mongo DB怎么样?我查看了文档,但我发现的唯一内容是docu中的以下代码段:

  

请注意,此页面上的任何运算符都可以组合在同一个查询文档中。例如,要查找j不等于3且k大于10的所有文档,您可以这样查询:

db.things.find({j: {$ne: 3}, k: {$gt: 10} });

因此他们在两个不同的属性上使用大于和不等于。他们没有说两个不平等的事情; - )

欢迎任何意见和启示: - )

1 个答案:

答案 0 :(得分:3)

你尝试过吗?这对我来说很好(找到k> 1且k <3的所有行):

db.things.find({k:{$gt:1, $lt:3}});