我想使用Mongoose生成MongoDB ObjectId
。有没有办法从Mongoose访问ObjectId
构造函数?
这个问题是关于从头开始生成新的 ObjectId
。生成的ID是全新的通用唯一ID。
另一个问题是要求从现有字符串表示创建ObjectId
。在这种情况下,您已经有一个ID的字符串表示 - 它可能是也可能不是普遍唯一的 - 您正在将其解析为ObjectId
。
答案 0 :(得分:234)
您可以在ObjectId
上找到require('mongoose').Types
构造函数。这是一个例子:
var mongoose = require('mongoose');
var id = mongoose.Types.ObjectId();
id
是新生成的ObjectId
。
您可以在Mongoose#Types documentation了解有关Types
对象的更多信息。
答案 1 :(得分:37)
您可以使用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();
答案 2 :(得分:1)
我需要在客户端生成mongodb id。
深入研究mongodb源代码后,我发现它们使用npm bson
lib生成ObjectID。
如果您只需要生成ObjectID而不安装整个mongodb / mongoose软件包,则可以导入较轻的bson
库:
const bson = require('bson');
new bson.ObjectId(); // 5cabe64dcf0d4447fa60f5e2
注意:还有一个名为bson-objectid
的npm项目更加轻巧
答案 3 :(得分:0)
使用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');