node.js - 如何使用mongoose生成ObjectId?

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

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

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

Dmitry Minkovsky asked 2019-08-05T05:44:49Z
3个解决方案
228 votes

你可以在ObjectId找到id构造函数。这是一个例子:

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

id是新生成的ObjectId

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

Dmitry Minkovsky answered 2019-08-05T05:45:18Z
35 votes

你可以使用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();
steampowered answered 2019-08-05T05:45:46Z
0 votes

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

在深入挖掘mongodb源代码后,我发现它们使用npm bson-objectid lib生成ObjectID。

如果你只需要生成一个ObjectID而不安装整个mongodb / mongoose包,你可以导入更轻的bson-objectid库:

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

注意:还有一个名为bson-objectid的npm项目更轻

Poyoman answered 2019-08-05T05:46:34Z
translate from https://stackoverflow.com:/questions/17899750/how-can-i-generate-an-objectid-with-mongoose