在MongoDb中,如何应用文档中存在的排序内部字段?
问题描述:
我的文档看起来像这样
{
field1: somevalue,
name:xtz
nested_documents: [ // array of nested document
{ x:"1", y:"2" }, // first nested document
{ x:"2", y:"3" }, // second nested document
{ x:"-1", y:"3" }, // second nested document
// ...many more nested documents
]
}
如何对nested_documents中存在的数据进行排序?
预期的答案如下所示:
How one can sort the data present in nested_documents?
Expected answer is shown below:
nested_documents: [ { x:"-1", y:"3" },{ x:"1", y:"2" },{ x:"2", y:"3" }]
答
为此,您必须使用聚合框架
To do this you would have to use the aggregation framework
db.test.aggregate([[$ unwind:'$ nested_documents'},{$ sort:{'nested_documents.x': 1}}])
db.test.aggregate([{$unwind:'$nested_documents'},{$sort:{'nested_documents.x': 1}}])
这将返回
"result" : [
{
"_id" : ObjectId("5139ba3dcd4e11c83f4cea12"),
"field1" : "somevalue",
"name" : "xtz",
"nested_documents" : {
"x" : "-1",
"y" : "3"
}
},
{
"_id" : ObjectId("5139ba3dcd4e11c83f4cea12"),
"field1" : "somevalue",
"name" : "xtz",
"nested_documents" : {
"x" : "1",
"y" : "2"
}
},
{
"_id" : ObjectId("5139ba3dcd4e11c83f4cea12"),
"field1" : "somevalue",
"name" : "xtz",
"nested_documents" : {
"x" : "2",
"y" : "3"
}
}
],
"ok" : 1
希望这会有所帮助