mongodb Mongo ObjectID、ObjectId和Mongoose ObjectId有什么区别

avwztpqn  于 11个月前  发布在  Go
关注(0)|答案(2)|浏览(206)

我弄不清楚mongo ObjectID和ObjectId之间的区别。文档说ObjectId,但当我阅读代码时,我看到

import { ObjectID } from 'bson';

字符串
让事情更混乱的是mongoose文档和代码。mongoose也说ObjectId http://mongoosejs.com/docs/api.html#types-objectid-js。但是当我阅读代码时,我看到

// mongodb.ObjectID does not allow mongoose.Types.ObjectId(id). This is
//   commonly used in mongoose and is found in an example in the docs:
//   http://mongoosejs.com/docs/api.html#aggregate_Aggregate
// constructor exposes static methods of mongodb.ObjectID and ObjectId(id)
type ObjectIdConstructor = typeof mongodb.ObjectID & {
  (s?: string | number): mongodb.ObjectID;
}


那么ObjectID、ObjectId和mongoose ObjectId之间到底有什么区别呢?
我发现还有一个SO在谈论这个BSON::ObjectId vs Mongo::ObjectID
不过链接已经死了,也没有提到 Mongoose 。所以我希望我的问题不会被标记为重复。

gc0ot86w

gc0ot86w1#

Mongo ObjectID是一个唯一的12字节标识符,可以由MongoDB作为主键生成。
ObjectID是唯一的整数字段,用于唯一标识表中的行
在Mongoose中,ObjectID与Mongo ObjectID相同,并引用另一个集合中的对象

cnh2zyt3

cnh2zyt32#

  1. ObjectID:这是MongoDB使用的BSON ObjectID数据类型。它是一个12字节的标识符,通常由时间戳、机器标识符、进程ID和计数器组成。这是由Node.js的原生MongoDB驱动程序提供的。
  2. ObjectId:这在MongoDB shell中很常见,它本质上与ObjectID相同。只是命名约定不同。当您在MongoDB shell中工作时,您将使用ObjectId。但在使用MongoDB本机驱动程序的Node.js环境中,您将使用ObjectID
  3. Mongoose ObjectId:Mongoose是一个MongoDB对象建模工具,旨在在异步环境中工作。Mongoose提供了一个直接的,基于模式的解决方案来使用MongoDB建模您的应用程序数据。Mongoose中的ObjectId本质上与Node.js的MongoDB原生驱动程序中的ObjectID相同。Mongoose只是提供了额外的便利和附加功能。
    总之,这三个术语本质上指的是同一件事,但在上下文中使用略有不同(MongoDB shell与Node.js环境与Mongoose环境)。

相关问题