相关疑难解决方法(0)

在MongoDB中存储ObjectId及其字符串形式之间的区别

我对Mongo DB使用ObjectIds感到有些困惑.当然,它们非常适合创建ID客户端,几乎肯定不会与其他客户端创建的ID冲突.但是mongo似乎以某种特殊的方式存储它们.存储id的字符串表示与将对象id存储为对象不同.为什么是这样?

字符串表单是否具有对象表单具有的所有相同信息?mongo为什么要这么长时间来区分这两种形式呢?当我尝试比较从前端发送的_ids时,它会搞砸我.我的数据库与它是否存储字符串形式的id或对象形式id无关,而且我的代码肯定是部分责备,我主要责怪mongo让它变得如此奇怪.

我错了,这很奇怪吗?为什么mongo这样做?

mongodb objectid

35
推荐指数
2
解决办法
1万
查看次数

我什么时候应该在 MongoDB 中使用 ObjectId 与 UUID

我正在使用 MongoDB 制作一个简单的 CRUD 应用程序,以便我可以了解更多信息。

该应用程序是一个简单的博客,我有一个名为“文章”的集合,其中存储了各种文档,每个文档都代表我博客的一篇文章。

当我显示所有博客文章的列表时,我可以执行 db.collection.find() 并列出所有文章。

但问题在于当我需要单独显示单个帖子时,当我需要查询单个特定文档的集合时。

合乎逻辑的解决方案是使用 RDBMS 和自动增量功能,但 MongoDB 是 NoSQL 并且没有自动增量功能。

我正在使用文档的自动生成的 _id 字段,默认情况下它存储 ObjectId,这意味着我的 url 看起来像这样:

http://localhost/blog/article.php?_id=5d41f6e5fc1a2f3d80645185
Run Code Online (Sandbox Code Playgroud)

我在文档中看到 ObjectId 包含服务器的唯一标识符,以及时间戳和计数器,是否将这些东西暴露为安全风险?

作为解决方案,我偶然发现了 UUID https://docs.mongodb.com/manual/reference/method/UUID/,它是一个自动生成的唯一 ID,它不会在其中公开时间戳和机器信息。使用它而不是包含我的 ObjectId 的 _id 来查询和查找文档似乎是一个合乎逻辑的解决方案。

所以我可以让我的网址看起来像这样:

http://localhost/blog/article.php?_id=23829651-26f7-4092-99d0-5be8658c966e
Run Code Online (Sandbox Code Playgroud)

但是,我应该保留 _id 属性吗?我应该添加另一个名为“id”的存储 UUID 的吗?我什至应该使用 UUID 吗?

database mongodb

6
推荐指数
1
解决办法
1426
查看次数

标签 统计

mongodb ×2

database ×1

objectid ×1