是否有正确的方法只返回与搜索查询匹配的元素?
例如,如果我有
{
"_id" : ObjectId("5806d"),
"title" : "vcvc",
"description" : "vcvc",
"lessons" : [
{
"lesson_body" : "Red Ball",
"lesson_title" : "Red Ball",
"_id" : ObjectId("5806s")
},
{
"lesson_body" : "Green Ball",
"lesson_title" : "Green Ball",
"_id" : ObjectId("5806y")
}
],
"__v" : 0
}
我如何才能根据id获得以下内容?
{
"lessons" :
{
"lesson_body" : "Red Ball",
"lesson_title" : "Red Ball",
"_id" : ObjectId("5806s")
}
}
现在我只有以下内容,但似乎只是暂停
function(id, classLesson, callback){
Class.find({'_id': classLesson._id}, {lessons: {$elemMatch: {_id: id}}})
}
答案 0 :(得分:0)
您希望在查询上指定查询投影,该投影指定要从数据库返回的字段。
例如:
Class.find(
{ '_id': classLesson._id }, // query filter
{ lessons: 1 } // query projection
)
您的查询是否应该在lessons._id
字段上执行$ elemMath?现在,您的代码中的$ elemMatch被放置在查询的投影部分中,并且不用于过滤。