0

Blogpost模型中定义。

schema.user = { type: mongoose.Types.ObjectId, ref: 'User' };

稍后在访问与模型匹配的文档时...

// Timestamp of when the user was created.
userDocument._id.getTimestamp();

// Different ObjectId, same value.
blogpostDocument.user.getTimestamp();

这些时间戳会相同吗?

我不只是自己测试它的原因是我正在极大地更改我的数据库模型以优化它们并添加新字段,而我还没有完成更改它们。因此,在更新所有文档以匹配新模型之前,我希望了解这个问题的含义。

谢谢!

4

1 回答 1

0

具有相同基础原始值的 ObjectID 都将具有相同的时间戳。

var mongoose = require('mongoose');
var o1 = new mongoose.Types.ObjectId();
var o2 = new mongoose.Types.ObjectId(o1.toString());
o1.getTimestamp();
//Fri Jul 26 2013 17:47:17 GMT-0600 (MDT)
o2.getTimestamp();
//Fri Jul 26 2013 17:47:17 GMT-0600 (MDT)

旁注:定义模式时,您需要使用mongoose.SchemaTypes.ObjectIdnot mongoose.Types.ObjectId

第二边注:最好将对象 ID 作为不透明的字符串进行处理,如果您想跟踪创建日期,请使用专用字段跟踪它们。请记住,mongodb 对象 ID 是由数据库本身外部的驱动程序生成的,时间戳是对象在内存中实例化的时间,这可能在它实际发送到数据库进行存储之前相当长。

于 2013-07-26T23:50:29.907 回答