【发布时间】:2016-03-17 22:13:43
【问题描述】:
我的文档结构类似于:
{
_id: ...,
key1: ....
key2: ....
....
min_value: //should be the minimum of all the values in options
options: [
{
source: 'a',
value: 12,
},
{
source: 'b',
value: 10,
},
...
]
},
{
_id: ...,
key1: ....
key2: ....
....
min_value: //should be the minimum of all the values in options
options: [
{
source: 'a',
value: 24,
},
{
source: 'b',
value: 36,
},
...
]
}
选项中各种来源的价值将不断更新(每隔几分钟或几小时), 假设选项数组的大小没有改变,即没有额外的元素被添加到列表中
我的查询属于以下类型:
-查找所有选项的 min_value 介于某个限制之间的所有文档。
我可以先对选项进行放松(然后取最小值),然后运行比较查询,但我是 mongo 新手,不确定性能如何 受展开操作的影响。这种类型的文件数量大约为几百万。
或者是否有人对更改文档结构有任何建议可以帮助我简化此查询? (除了为每个源创建单独的文档 - 它会涉及大量数据重复) 谢谢!
【问题讨论】:
-
那么您正在寻找的实际情况是什么?它是最小
options.value小于和大于一个范围的一组数字吗?你有哪个 MongoDB 版本?最新的 3.2.x 版本系列具有在没有$unwind的情况下允许这样做的功能。 -
谢谢!你指的是 $elemMatch 吗?然后我使用比较查询运算符 ..something like
db.survey.find( { options: { $elemMatch: { value: { $gte: 8 }, /*any other filters*/} } } ) -
不,我不是。不只是无论如何。你有哪个 MongoDB 版本?
-
我有最新的 3.2
标签: mongodb mongodb-query aggregation-framework