【发布时间】:2016-12-08 09:54:29
【问题描述】:
给定一个像下面这样的时间序列文档
{
data:{
'2015':['a', 'b', 'c', ...], //<array of n datapoints>
'2016':['d', 'e', 'f', ...], //<array of n datapoints>
},
otherFieldA: {...}
otherFieldB: {...}
}
要获得2015 的一部分,我将使用here 找到的以下投影:
myProjection = {'data':0, 'otherFieldA':0, 'otherFieldB':0, 'data.2015':{'$slice': [3, 5]}}
db.collection.find({}, myProjection)
现在让我们假设我也想得到2016的全部@
选项 A:在上面的投影中添加
'data.2016':1会得到经典的 inclusion + exclusion mongo 错误选项 B:将另一个
$slice添加到投影'data.2016':{'$slice': <len of data.2016>}可行,但可能时间效率低下,因为 mongo 需要向下滚动data.2016数组,而不仅仅是舀起整个阵列。另外,我需要知道data.2016的长度,这不是给定的
是否有第三种选择可以获取data.2015 的一部分和所有data.2016,同时排除所有otherField 值?
【问题讨论】:
标签: javascript python mongodb pymongo