如何在mongoDB中的集合记录中对数组进行排序
MongoDB菜鸟在这里…
好的,我有一个学生集合,每个学生的记录看起来都如下所示:我想按降序对“类型”:“作业”分数进行排序。
mongo外壳上的咒语是什么样的?
> db.students.find({'_id': 1}).pretty(){
"_id" : 1,
"name" : "Aurelia Menendez",
"scores" : [
{
"type" : "exam",
"score" : 60.06045071030959
},
{
"type" : "quiz",
"score" : 52.79790691903873
},
{
"type" : "homework",
"score" : 71.76133439165544
},
{
"type" : "homework",
"score" : 34.85718117893772
}
]
}
我正在尝试这个咒语…
doc = db.students.find() for (_id,score) in doc.scores:
print _id,score
但它不起作用。
回答:
您将需要在应用程序代码中或在MongoDB 2.2中使用新的AggregationFramework来操纵嵌入式数组。
mongo
Shell中的示例聚合:
db.students.aggregate( // Initial document match (uses index, if a suitable one is available)
{ $match: {
_id : 1
}},
// Expand the scores array into a stream of documents
{ $unwind: '$scores' },
// Filter to 'homework' scores
{ $match: {
'scores.type': 'homework'
}},
// Sort in descending order
{ $sort: {
'scores.score': -1
}}
)
样本输出:
{ "result" : [
{
"_id" : 1,
"name" : "Aurelia Menendez",
"scores" : {
"type" : "homework",
"score" : 71.76133439165544
}
},
{
"_id" : 1,
"name" : "Aurelia Menendez",
"scores" : {
"type" : "homework",
"score" : 34.85718117893772
}
}
],
"ok" : 1
}
以上是 如何在mongoDB中的集合记录中对数组进行排序 的全部内容, 来源链接: utcz.com/qa/428554.html