170

我想ObjectId用 Mongoose 生成一个 MongoDB。有没有办法ObjectId从 Mongoose 访问构造函数?

  • 这个问题是关于从头开始生成一个新的。 ObjectId生成的 ID 是一个全新的通用唯一 ID。

  • 另一个问题询问关于ObjectId现有字符串表示创建一个。在这种情况下,您已经有一个 ID 的字符串表示形式——它可能是也可能不是普遍唯一的——并且您正在将其解析为ObjectId.

4

4 回答 4

362

您可以ObjectIdrequire('mongoose').Types. 这是一个例子:

var mongoose = require('mongoose');
var id = mongoose.Types.ObjectId();

id是一个新生成的ObjectId.


注意:正如Joshua Sherman指出的那样,使用 Mongoose 6,您必须在呼叫前加上new

var id = new mongoose.Types.ObjectId();

您可以在Mongoose#Types 文档中阅读有关该Types对象的更多信息。

于 2013-07-27T16:02:19.187 回答
58

您可以使用 mongoose 像这样创建一个新的 MongoDB ObjectId

var mongoose = require('mongoose');
var newId = new mongoose.mongo.ObjectId('56cb91bdc3464f14678934ca');
// or leave the id string blank to generate an id with a new hex identifier
var newId2 = new mongoose.mongo.ObjectId();
于 2016-02-22T23:33:05.010 回答
26

我需要在客户端生成 mongodb id。

在深入研究 mongodb 源代码后,我发现他们使用 npm bsonlib 生成 ObjectID。

如果您只需要生成一个 ObjectID 而无需安装整个 mongodb / mongoose 包,您可以导入较轻的bson库:

const bson = require('bson');
new bson.ObjectId(); // 5cabe64dcf0d4447fa60f5e2

注意:还有一个 npm 项目,名字叫bson-objectid更轻

于 2019-04-09T00:30:32.433 回答
21

使用 ES6 语法

import mongoose from "mongoose";

// Generate a new new ObjectId
const newId2 = new mongoose.Types.ObjectId();
// Convert string to ObjectId
const newId = new mongoose.Types.ObjectId('56cb91bdc3464f14678934ca');
于 2019-07-26T06:39:50.440 回答