如何使用mongoose生成ObjectId?

Dmi*_*sky 113 mongoose mongodb node.js

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

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

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

Dmi*_*sky 259

你可以找到ObjectId构造函数require('mongoose').Types.这是一个例子:

var mongoose = require('mongoose');
var id = mongoose.Types.ObjectId();
Run Code Online (Sandbox Code Playgroud)

id是一个新生成的ObjectId.

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

  • 看起来像 mongoose 6 你必须添加新的``new mongoose.Types.ObjectId()`` (9认同)
  • 如果您在同一台计算机上在一秒钟内生成16777216,那么您可能会获得重复.:) (8认同)
  • 你怎么能确定这真的很独特?以前做过任何检查吗? (3认同)
  • 更正:如果您在同一台机器上在一毫秒内生成 16777216,那么您可能会得到重复的结果。 (3认同)

ste*_*red 41

您可以ObjectId使用mongoose 创建这样的新MongoDB :

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();
Run Code Online (Sandbox Code Playgroud)


Mat*_*ane 16

使用 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');
Run Code Online (Sandbox Code Playgroud)

  • mongoose.Type 和 mongoose.Schema.Types 之间有什么区别? (2认同)

Poy*_*man 6

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

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

如果您只需要生成ObjectID而不安装整个mongodb / mongoose软件包,则可以导入lighter bson库:

const bson = require('bson');
new bson.ObjectId(); // 5cabe64dcf0d4447fa60f5e2
Run Code Online (Sandbox Code Playgroud)

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