从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存储库