如何使用mongoose生成ObjectId?

时间:2013-07-27 16:02:19

标签: node.js mongodb mongoose

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

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

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

4 个答案:

答案 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');