我需要根据字段从mongodb强制排序子文档中提取数据。我有一个名为entries的集合。每个entry代表一个TvShow,以及它的Seasons和Episodes。每个episode都有自己的Mediafile。举个例子:
db.entries.findOne({})
{
Title: "The Big Band Theory"
Year: 2007,
Seasons: [{
Reorder: 2,
Episodes: [{
Reorder: 2,
Mediafiles: [{
Reorder: 2
filename: "/tvshows/XXXXXX/S2_E2.mkv"
}, {
Reorder: 1
filename: "/tvshows/XXXXXX/S2_E2.mkv"
}
]
}, {
Reorder: 1,
Mediafiles: [{
Reorder: 2
filename: "/tvshows/XXXXXX/S2_E1.mkv"
}, {
Reorder: 1
filename: "/tvshows/XXXXXX/S2_E1.mp4"
}
]
}
]}, {
Reorder: 1,
Episodes: [{
Reorder: 2,
Mediafiles: [{
Reorder: 2
filename: "/tvshows/XXXXXX/S1_E2.mkv"
}, {
Reorder: 1
filename: "/tvshows/XXXXXX/S1_E2.mkv"
}
]
}, {
Reorder: 1,
Mediafiles: [{
Reorder: 2
filename: "/tvshows/XXXXXX/S1_E1.mkv"
}, {
Reorder: 1
filename: "/tvshows/XXXXXX/S1_E1.mp4"
}
]
}
]}
]
}因此,我想提取这些数据,这些数据是按每个“季节”“剧集”和“Mediafile”中的Reorder字段排序的。
我尝试使用$sort,但Seasons、Episodes和Mediafiles仍未排序。我认为我应该使用$unwind和$project,但是我不能递归地对子文档的子文档执行此操作。
有什么可以帮忙的吗?
发布于 2021-02-19 17:41:57
排序适用于文档。当您进行排序时,您将以指定的排序顺序重新获得顶级文档,但是排序不会重新排序单个文档中的键,这似乎是您正在尝试做的事情。
如果你只想要嵌入的文档,通过投影将它们提升到顶层,然后对它们应用排序。
如果你真的想重新排序字段,这就更复杂了。
https://stackoverflow.com/questions/66274807
复制相似问题