2012-04-23 76 views
1

我想让mongo生成_ids作为字符串。当向客户端发送第四条消息或在程序的其他部分使用时,它们更加可用。 现在我将它们转换为所有这些东西的字符串,然后将它们转换回运行查询。你可以让mongo默认生成_ids作为字符串吗?

任何想法或原因不?

回答

3

不管你想要什么,你都可以设置_id。你甚至可以创建一个ObjectId,将其转换为字符串,然后保存该字符串而不是实际的ObjectId。你会在这里失去的主要是紧凑。你会失去了次要的东西是提取出的ObjectId值没有铸造它,例如日期的能力,等等​​。

举个例子:你将不得不改写它:

> var newId = new ObjectId(); 
> db.test.insert({_id:newId, x:"test"}); 
> db.test.find(); 
{ "_id" : ObjectId("4f94c2a11a6bbec3872cb315"), "x" : "test" } 
> db.test.insert({_id:newId.str, x:"test"}); 
> db.test.find(); 
{ "_id" : ObjectId("4f94c2a11a6bbec3872cb315"), "x" : "test" } 
{ "_id" : "4f94c2a11a6bbec3872cb315", "x" : "test" } 

更新到一个ObjectId来做到这一点:

> var newId = new ObjectId(); 
> newId.getTimestamp(); 
ISODate("2012-04-23T03:22:56Z") 
+0

等等,ObjectId包含一个时间戳? – McGarnagle 2012-04-23 02:53:07

+1

http://www.mongodb.org/display/DOCS/Object+IDs – 2012-04-23 03:20:26

+0

添加了一个从ObjectId中获取时间戳的示例 – 2012-04-23 03:24:59

相关问题