【发布时间】:2020-11-02 21:56:11
【问题描述】:
我正在尝试使用聚合框架从我的集合中获取 3 个子文档(我只想使用聚合,因为这是长管道的一部分)。
我只知道一个子文档的一个属性。我还需要检索 subdoc 以及上一个和下一个。
示例:
[
{
"title": "Title 34",
"subDoc": {
"subtitle": "subtitle 8",
"order": 8
}
},
{
"title": "Title 34",
"subDoc": {
"subtitle": "subtitle 6",
"order": 6
}
},
{
"title": "Title 34",
"subDoc": {
"subtitle": "subtitle 11",
"order": 11
}
},
{
"title": "Title 34",
"subDoc": {
"subtitle": "subtitle 13",
"order": 13
}
},
{
"title": "Title 34",
"subDoc": {
"subtitle": "subtitle 7",
"order": 7
}
}
]
我只知道一个字幕顺序(例如“11”),我需要得到这样的东西:
[
{
"title": "Title 34",
"subDoc": [
{
"subtitle": "subtitle 8",
"order": 8
},
{
"subtitle": "subtitle 11",
"order": 11
},
{
"subtitle": "subtitle 13",
"order": 13
}
]
}
]
我尝试过使用 unwind、order、limit,但我只能获得上一个或下一个文档,不能同时获得两者。
【问题讨论】:
-
您可以将所有文档分组到一个数组中,然后找到您知道的数组元素的索引。这将为您提供上一个和下一个索引值 - 以及元素。
标签: mongodb aggregation-framework