gpt4 book ai didi

javascript - MongoDB - 包含包含和排除的复杂$切片

转载 作者:行者123 更新时间:2023-12-03 05:28:52 26 4
gpt4 key购买 nike

给定一个如下所示的时间序列文档

{
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蒙戈错误

  • 选项 B:添加另一个 $slice到投影'data.2016':{'$slice': <len of data.2016>}有效,但可能时间效率低下,因为 mongo 需要向下滚动 data.2016数组而不是仅仅舀起整个数组。另外,我需要知道 data.2016 的长度,这不是给定的

还有第三种选择来获得 data.2015 的一片吗?以及所有data.2016 ,同时排除所有 otherField值(value)观?

最佳答案

您可以使用 $project 通过聚合框架来完成此操作:

db.collection.aggregate([
{
$project:{
"data.2015":{
$slice:[
"$data.2015",
1,
1
]
},
"data.2016":"$data.2016"
}
}
])

输出将是:

{
"_id":ObjectId("58492f23f2e6a23e2168649d"),
"data":{
"2015":[
"b"
],
"2016":[
"d",
"e",
"f"
]
}
}

关于javascript - MongoDB - 包含包含和排除的复杂$切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41036438/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com