mongodb - 如何查询不是 ObjectId 类型的 _id

标签 mongodb mongoose mongodb-query

(我是 mongo 的新手)

如何查询不是 ObjectId 类型的 _id?

我 mongorestore 了一个 mongodump,但无法根据 id 字段获得任何结果。一段时间后我注意到集合中的记录不符合 ObjectID 类型。

"_id": "7409a2ab-322e-40f3-b991-c3ebeda78f61",

如果我将 id 更改为 id:"5c47422231caf0939f3d7cc7" 那么我的查询将正常工作,因为它与 ObjectID 类型匹配。

我一直收到 CastError: Cast to ObjectId failed for value "f7757753-c450-42f9-b0f9-9a617628fcfa"at path "_id"for model "mydb"

我试过查询 mydb.findById({ _id: 'f7757753-c450-42f9-b0f9-9a617628fcfa' })mydb.findOne({ _id: 'f7757753-c450 -42f9-b0f9-9a617628fcfa' mydb.findOne({ _id: 'f7757753-c450-42f9-b0f9-9a617628fcfa' }

还尝试将 ObjectId 转换合并到我的查询中,如下所示:{ _id: ObjectId("f7757753-c450-42f9-b0f9-9a617628fcfa") }

最佳答案

在您的模型中,您说您将对象 ID 作为 ID 的数据类型,对吗?所以用这个的时候尖叫cast error是正常的

7409a2ab-322e-40f3-b991-c3ebeda78f61

作为_id ..所以你需要改变你的模型(实际上是模式),如果id是一个字符串而不是一个对象id,你的类型

{
_id : String,
blah,
blah,
blah,
}

关于mongodb - 如何查询不是 ObjectId 类型的 _id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54372416/

相关文章:

javascript - Meteor - 响应式(Reactive)更新非渲染数据

MongoDB - 聚合多行

node.js - Mongoose 将架构属性更改应用于文档

elasticsearch - 引用elasticsearch中的另一个索引

javascript - MongoDB 从聚合中排除某些文档

ruby-on-rails - railscast# 238 的问题,date_select 不适用于 rails 4。

mongodb - 如何在 MongoDB 中存储多对多关系

mongodb - 仅当当前不存在时才在 mongoose 中创建多个文档

regex - 删除 MongoDB 集合中字符串字段值中的所有空格

mongodb - 当前字段的聚合条件计数