【问题标题】:"Cast to ObjectId failed for value" when querying subdocument [Mongoose]查询子文档 [Mongoose] 时“转换为 ObjectId 的值失败”
【发布时间】:2018-06-24 07:01:10
【问题描述】:

我希望能够使用子文档的 id 访问子文档,而不必知道父文档的 id。我有以下猫鼬模式:

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 failed for value 错误。

我做错了什么?

【问题讨论】:

  • 不,那只是我写这篇文章时的一个错误。我已经修好了

标签: node.js mongodb mongoose


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2013-03-24
    • 2021-09-05
    • 2021-03-09
    • 1970-01-01
    • 2018-01-06
    • 1970-01-01
    • 2021-03-14
    • 2020-04-18
    • 2020-12-16
    相关资源
    最近更新 更多