使用 cursor.min 和嵌入文档执行 mongodb 查询时出错
Error executing a mongodb query with cursor.min with embedded documents
在我的 collection 中有这样的文档
{ "_id" : 112, "name" : "Myrtle Wolfinger", "scores" : [ { "type" : "exam", "score" : 73.93895528856032 }, { "type" : "quiz", "score" : 35.99397009906073 }, { "type" : "homework", "score" : 93.85826506506328 }, { "type" : "homework", "score" : 71.21962876453497 } ] }
我想为每个文档找到字段 scores.score 的最小值,其中 score.type = "homework"
.
我执行了这样的查询
db.students.find({},{"scores.score":1}).min( { "scores.type":"homework" } )
mongoshellreturns这个错误
error: {
"$err" : "Unable to execute query: error processing query: ns=school.students limit=0 skip=0\nTree: $and\nSort: {}\nProj: { scores.score: 1.0 }\n planner returned error: unable to find relevant index for max/min query",
"code" : 17007
}
您不会为此将 find() 与 min() 一起使用。 min() 会使用索引简单地将结果限制在下限以上。而是尝试使用 aggregate()。
db.students.aggregate([
{
$unwind:"$scores"
},
{
$match: {"scores.type":"homework"}
},
{
$group:{
_id: {
_id:"$_id",
name: "$name"
},
min_score: {$min: "$scores.score"}
}
}
]);
在我的 collection 中有这样的文档
{ "_id" : 112, "name" : "Myrtle Wolfinger", "scores" : [ { "type" : "exam", "score" : 73.93895528856032 }, { "type" : "quiz", "score" : 35.99397009906073 }, { "type" : "homework", "score" : 93.85826506506328 }, { "type" : "homework", "score" : 71.21962876453497 } ] }
我想为每个文档找到字段 scores.score 的最小值,其中 score.type = "homework"
.
我执行了这样的查询
db.students.find({},{"scores.score":1}).min( { "scores.type":"homework" } )
mongoshellreturns这个错误
error: {
"$err" : "Unable to execute query: error processing query: ns=school.students limit=0 skip=0\nTree: $and\nSort: {}\nProj: { scores.score: 1.0 }\n planner returned error: unable to find relevant index for max/min query",
"code" : 17007
}
您不会为此将 find() 与 min() 一起使用。 min() 会使用索引简单地将结果限制在下限以上。而是尝试使用 aggregate()。
db.students.aggregate([
{
$unwind:"$scores"
},
{
$match: {"scores.type":"homework"}
},
{
$group:{
_id: {
_id:"$_id",
name: "$name"
},
min_score: {$min: "$scores.score"}
}
}
]);