从Mongodb中检索一个元素

我试图从基于ID的类集合中检索一个教训。 我从以前的答案放在一起,但它不返回任何东西。 有人能指出我正确的方向吗?

我的代码

Class.aggregate([ {$match: {'lessons._id': id}}, {$project: { lessons: {$filter: { input: '$lessons', as: 'lesson', cond: {$eq: ['$$lesson._id', id]} }}, _id: 0 }} ]) 

 { "_id" : ObjectId("14354"), "title" : "Easy Math", "instructor_id" : "2454", "lessons" : [ { "lesson_body" : "2 + 2 = 4", "lesson_title" : "Addition", "_id" : ObjectId("3456") }, { "lesson_body" : "4 - 2 = 2", "lesson_title" : "Subtraction", "_id" : ObjectId("4456") } ], "__v" : 0 } { "_id" : ObjectId("5345"), "title" : "Harder Math", "instructor_id" : "6345", "lessons" : [ { "lesson_body" : "2 * 2 = 4", "lesson_title" : "Multiplication", "_id" : ObjectId("7454") } ], "__v" : 0 } 

这不应该是lessons而不是lesson

在这一行上: cond: {$eq: ['$$lessons._id', id]}

希望对你有帮助:

 db.COLLECTION_NAME.find({ lessons: { $elemMatch: { "_id" : ObjectId("3456")} } }) 

我不完全确定,但记得有类似的问题。 另外我觉得你的语法看起来有点奇怪? 尝试适应这一点,这是我所学到的应该看起来至less:

 var objectId = require('mongodb').ObjectID; 

然后当您尝试通过ID获取对象时:

 db.collection("classes").findOne({"_id": new ObjectID(id)} 

随意在这里find灵感: github存储库