【发布时间】:2014-05-25 05:44:10
【问题描述】:
数据库中的对象有一个“属性”数组,可以保存不同的对象。其中一些表示数字或范围,看起来像:
{'value': 10}
或
{'minValue': 4, 'maxValue': 8}
在查询集合以获取特定数字(例如 X)时,我想查找值等于 X 或 minValue
db.Pool0.find({$or: [{'properties.value': X}, {'properties.minValue': {$lte: X}, 'properties.maxValue': {$gte: X}}]}, {'_id': 1}).pretty()
缺点是如果属性数组包含多个指定 minValue 和 maxValue 的对象,则 X 可以在它们之间。例如
"properties" : [
{
"minValue" : 4,
"maxValue" : 6
},
{
"minValue" : 10,
"maxValue" : 20
}
]
将匹配 X = 8。可以改进查询以尊重属性中的对象结构吗?
【问题讨论】:
-
你能展示一些收集的文件吗?
标签: mongodb mongodb-query aggregation-framework