【发布时间】:2016-08-27 21:38:15
【问题描述】:
我的文档结构如下。
{
"_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”数组字段中获取特定元素。
例如来自特定位置的元素,例如数组元素“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
【问题讨论】:
标签: arrays mongodb spring-data-mongodb bson