Meteor.Collection.ObjectID()vs MongoDB ObjectId()

时间:2013-03-10 02:18:37

标签: mongodb meteor

为什么Meteor.js使用自己的ID算法?

为什么不使用MongoDB的ObjectId()?

2 个答案:

答案 0 :(得分:35)

如果您选择使用Meteor,Meteor对对象ID使用相同的方法:

Meteor.Collection.ObjectID()与MongoDB的ObjectID

相同

它位于Meteor.Collection名称之下。它使用EJSON将普通JSON中的对象id保存到客户端。因为基本上有2个带有流星的数据库

<强> Minimongo

这是客户端mongodb的一种缓存。当浏览器加载时,数据从服务器上的主mongodb下载到此。当进行更改时,它们会被推送到服务器。

服务器MongoDB

这是服务器上10gen的原始mongodb

因此,由于这两个数据库,Meteor需要在Meteor.Collection中包含mongodb功能,并允许您在客户端和服务器上使用相同的代码。

默认情况下,meteor不会使用对象ID,它会使用一些随机的字母数字文本。这样做是为了让您可以轻松地在您的html属性中的URL和ID中使用ID。

如果您使用new Meteor.Collection.ObjectID(),您将获得一个ObjectID对象,该对象将在服务器端使用mongodb的ObjectID规范。对象ID中的时间戳值不会被阻止,但这不应该造成任何伤害。

答案 1 :(得分:5)

自0.9.1 Meteor建议使用Mongo.ObjectID代替Meteor.Collection.ObjectID。基本上两者都是一样的。 检查history.md以了解命名约定的更多更改。