我有一个包含这样文件的集合:
book {
title: "hello world",
chapters: [
{
number: "2",
title: "foo2"
},{
number: "1",
title: "foo1"
}
]
}
我需要以下选项之一:
获取文档的查询具有按章节排序的章节数组。编号
一个保存操作,在推送文档之前对数组进行排序(但是通过委托给mongodb)
我在官方mongodb文档中看到了 $ sort 操作,但我不知道如何在Morphia中使用它。 http://docs.mongodb.org/manual/reference/operator/update/sort/
输出应为:
预订{ 标题:"你好世界", 章节:[ 的 { 号码:" 1", 标题:" foo1" }, { 号码:" 2", 标题:" foo2" } ] }
答案 0 :(得分:0)
你不能像那样对子文档进行排序。您可以对结果进行排序,否则,如here所示。
答案 1 :(得分:0)
解决方案1:
如果您的收藏是"预订"你可以试试这样的地方:
db.book.update( {title: "hello word"},
{ $push: {
chapters:{
$each:[],
$sort: {number:1}
}
}
})
测试:
创建文档:
db.book.insert({
title: "hello world",
chapters: [
{
number: "2",
title: "foo2"
},{
number: "1",
title: "foo1"
}
]
})
检查:
db.book.find().pretty()
按编号对章节进行排序:
db.book.update( {title: "hello world"},
{ $push: {
chapters:{
$each:[],
$sort: {number:1}
}
}
})
再次检查:
db.book.find().pretty()
解决方案2:
否则,如果你真的有任何收集的文件" book"嵌入式,这是解决方案:
db.yourcollection.update( {"book.title": "hello world"},
{ $push: {
"book.chapters":{
$each:[],
$sort: {number:1}
}
}
})
测试:
创建文档:
db.yourcollection.insert({book:{
title: "hello world",
chapters: [
{
number: "2",
title: "foo2"
},{
number: "1",
title: "foo1"
}
]
}})
检查:
db.book.find().pretty()
按编号对章节进行排序:
db.yourcollection.update( {"book.title": "hello world"},
{ $push: {
"book.chapters":{
$each:[],
$sort: {number:1}
}
}
})
再次检查:
db.book.find().pretty()