查询子文档时,“转换为ObjectId失败了”[Mongoose]

时间:2018-01-15 15:59:02

标签: node.js mongodb mongoose

我希望能够使用其id访问子文档,而不必知道父ID的id。我有以下mongoose架构:

var subdocumentSchema = mongoose.Schema({ 
      data: String
})

var userSchema = mongoose.Schema({                                                                                                      
     firstname : String,                                                                                                              
     lastname : String,                                                                                                           
     subdocument: [subdoumentSchema]
})

我用它来创建以下对象:

{
    "_id":"5a36c5d211e4892747300363",
    "firstname": "Person",
    "lastname":"Personson",
    "subdocument": 
    [{
         "_id":"5a5ccd4905a74e65945b6a0a",
         "data" : ...
    }]
}

在mongo控制台中,我可以使用带有以下查询的子文档ID找到该文档:db.users.find({"subdocument._id": ObjectId("5a5ccd4905a74e65945b6a0a")})

然而,我和猫鼬无法相提并论。 User.findById({'contactRequests._id': '5a5ccd4905a74e65945b6a0a'})只会产生 Cast to ObjectId因值 -error而失败。

我做错了什么?

1 个答案:

答案 0 :(得分:0)

问题是使用findById而不是findOne。通过使用findById{'contactRequests._id': '5a5ccd4905a74e65945b6a0a'}被解析为ID本身,这不是我想要的。