从Mongodb查询中返回一个元素(新手)

时间:2016-10-19 02:20:55

标签: javascript node.js mongodb mongoose mongodb-query

是否有正确的方法只返回与搜索查询匹配的元素?

例如,如果我有

{
    "_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}}})
}

1 个答案:

答案 0 :(得分:0)

您希望在查询上指定查询投影,该投影指定要从数据库返回的字段。

例如:

Class.find(
  { '_id': classLesson._id }, // query filter 
  { lessons: 1 } // query projection
)

您的查询是否应该在lessons._id字段上执行$ elemMath?现在,您的代码中的$ elemMatch被放置在查询的投影部分中,并且不用于过滤。