_id:ObjectID和String之间有什么区别?

Snæ*_*ørn 7 mongodb

有什么区别:

{
   _id: ObjectId("507f191e810c19729de860ea")
}
Run Code Online (Sandbox Code Playgroud)

{
   _id: "507f191e810c19729de860ea"
}
Run Code Online (Sandbox Code Playgroud)

我似乎无法找到任何关于此事的内容.

它让我感到困惑,因为当你使用JavaScript插入它时,它将使用这种ObjectId("507f191e810c19729de860ea")格式.但是如果你使用C#驱动程序,它将使用该"507f191e810c19729de860ea"格式.

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

Chr*_*ald 8

ObjectID是一个12字节的BSON对象ID(它需要24才能显示为十六进制,因为你需要两个十六进制字符来编码一个字节值).该字符串是一个完整的24个字节.有关详细信息,请参阅ObjectID规范.

也就是说,您可以使用任何您想要的_id字段,但建议您坚持使用一致的方案 - 使用所有字符串(以及在引用外键的其他文档时使用字符串)或使用所有ObjectID.使用ObjectID是常规的,但只要您拥有完全一致的方案,就不应该遇到重大问题.