mongodb - _id : ObjectID and String? 有什么区别

标签 mongodb

两者有什么区别:

{
   _id: ObjectId("507f191e810c19729de860ea")
}

{
   _id: "507f191e810c19729de860ea"
}

我似乎找不到任何关于此事的信息。

这让我很困惑,因为当您使用 JavaScript 插入时,它会使用 ObjectId("507f191e810c19729de860ea") 格式。 但如果您使用 C# 驱动程序,它将使用 "507f191e810c19729de860ea" 格式。

字符串格式似乎是更好的选择,因为它使用的空间更少。

最佳答案

ObjectIDs 是一个 12 字节的 BSON 对象 ID(它需要 24 才能显示为十六进制,因为您需要两个十六进制字符来编码一个字节值)。该字符串是一个完整的 24 个字节。见 ObjectID specification具体情况。

也就是说,您可以为 _id 字段使用任何您想要的内容,但建议您坚持一致的方案 - 要么使用所有字符串(以及在您引用其他字符串的情况下使用字符串)来自外键的文档)或使用所有 ObjectID。使用 ObjectID 是常规做法,但只要您有一个完全一致的方案,您应该不会有什么大问题。

关于mongodb - _id : ObjectID and String? 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15980136/

相关文章:

c# - 如何使用c#为Mongodb中的子文档创建id

c# - MongoDB C# 驱动程序 'Remote certificate is invalid'

python - pymongo 和 $ne : null 的语法错误

mongodb - 为远程用户密码保护 mongodb 数据库的最简单方法是什么?

java - 带有 jQ​​uery Ajax/JSON 前端的 MongoDB 或 CouchDB 中间件

javascript - mongoDB中的迭代树

mongodb - 解析 GraphQL 输出自动生成的 typescript-mongodb 类型

MongoDB 聚合 $or 与 $elemMatch、$expr 在 $lookup 管道内

ruby - `require' : cannot load such file -- mongo (LoadError)

node.js - 填充 ('model' 时出现 Mongoose 错误不是函数)