Это мой dbcollection в mongodb
{
"_id" : 0,
"name" : "+Anima",
"author" : "MUKAI Natsumi",
"type" : [
"Adventure",
"Fantasy"
],
"chapters" : [
{
"chapterName" : "+Anima 56",
"chapterLink" : "http://...",
"groupTranslate" : "Manga Palace Group",
"dateUpload" : 1359478800000,
"chapterNumber" : 56.0000000000000000,
"images" : [
"img0",
"img1",
"img2",
"img3"
]
},
{
"chapterName" : "+Anima 55",
"chapterLink" : "http://....",
"groupTranslate" : "Manga Palace Group",
"dateUpload" : 1410109200000,
"chapterNumber" : 55.0000000000000000,
"images" : [
"img0",
"img1",
"img2",
"img3"
]
}
]
}
Я не могу найти сортировку главы списка по датеUpload в mongodb с помощью java-кода. Пожалуйста помоги.
Агрегация Mongo $ решит вашу проблему. Ниже запроса сначала $ разматывать массив chapters
а затем сортировать dateUpload
db.collectionName.aggregate({
"$unwind": "$chapters" // unwind breaks the chapters array
}, {
"$sort": {
"chapters.dateUpload": -1 // then seperated chapters array sorted by dateUpload
}
}, {
"$group": {
"_id": "$_id",
"chapters": {
"$push": "$chapters" // group used for grouping chapters array
}
}
}).pretty()
И для преобразования вышеуказанного запроса в java code formatt, а затем следуйте ниже mogo aggregation java driver code. Java Driver and Aggregation Framework
Это должно сделать это, используя aggregate()
:
db.foo.aggregate( [ { $project: {chapters: 1} },
{ $unwind: "$chapters" },
{ $sort: {"chapters.dateUpload": -1} }
] );
Извлеките субдоку главы с помощью $project
, затем $unwind
его, чтобы деконструировать массив и получить каждый элемент, наконец, $sort
them on dateUpload value (по убыванию, используйте 1
для возрастания).
chapters
сортировался по порядку в соответствии сdateUpload
, верно?