gpt4 book ai didi

arrays - 从mongodb中另一个数组字段中的数组元素中获取特定数组元素

转载 作者:行者123 更新时间:2023-12-03 15:59:59 30 4
gpt4 key购买 nike

我的文档结构如下。

{
"_id" : {
"timestamp" : ISODate("2016-08-27T06:00:00.000+05:30"),
"category" : "marketing"
},
"leveldata" : [
{
"level" : "manager",
"volume" : [
"45",
"145",
"2145"
]
},
{
"level" : "engineer",
"volume" : [
"2145"
]
}
]
}

“leveldata.volume”嵌入式数组文档字段可以包含大约 60 个元素。

在本例中,“leveldata”是一个数组文档。

volume”是“leveldata”内的另一个数组字段。

我们需要从“volume”数组字段中获取特定元素。

例如,来自特定位置的元素,例如数组元素“体积”中的位置1-5

此外,在本例中,我们基于“leveldata.level”字段使用位置运算符来获取特定数组元素。

我尝试使用$slice运算符。但是,它似乎只适用于数组,不适用于数组字段内的数组,因为我的场景就是这种情况。

我们可以从应用程序层执行此操作,但这意味着将整个数组元素从 mongo db 加载到内存中,并且然后获取所需的元素。我们希望避免这样做并直接从 mongodb 获取它。

下面的查询是我用来根据需要获取元素的查询。

db.getCollection('mycollection').find(
{
"_id" : {
"timestamp" : ISODate("2016-08-26T18:00:00.000-06:30"),
"category" : "sales"
}
,
"leveldata.level":"manager"
},
{
"leveldata.$.volume": { $slice: [ 1, 5 ] }
}
)

您能否告诉我们您对如何解决此问题的建议。

谢谢

mongouser

最佳答案

嗯,是的,您可以使用 $slice 来获取数据,例如

db.getCollection('mycollection').find({"leveldata.level":"manager"} , { "leveldata.volume" : { $slice : [3 , 1] } } )

关于arrays - 从mongodb中另一个数组字段中的数组元素中获取特定数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39181721/

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