【发布时间】:2013-09-11 21:26:04
【问题描述】:
将 id 作为 ObjectId 存储到相关文档中与将其存储为字符串文字相比有什么好处吗?
使用 ObjectID:
{
"_id": ObjectId("522bb79455449d881b004d27"),
"username": "admin",
"folder": ObjectId("522bb79455449d881b004d23")
}
相对于字符串:
{
"_id": ObjectId("522bb79455449d881b004d27"),
"username": "admin",
"folder": "522bb79455449d881b004d23"
}
对于我将数据发送回客户端的 API...使用字符串意味着我不必“清理”数据...因为我们必须进行第二次查询才能获取文件夹无论如何都要记录...是否值得使用 ObjectId? (如果是,为什么?)
谢谢
【问题讨论】:
-
如果您确保您使用的字符串非常独特(就像 ObjectId 生成所确保的那样),它可能不会有太大的不同。此外,BSON 中的 ObjectId 类型限制为 12 个字节,但如果需要,您可以使用更大的字符串。但是,如果您使用来自 Mongo shell 的数据,ObjectId 会派上用场,因为您也可以使用 ObjectId 打印时间戳,而字符串无法做到这一点。这能回答你的问题吗?
-
@Buchi 谢谢.. 该字符串将始终是一个 ObjectID,我可以在 php 中使用它来查找另一个对象 new MongoID('myIDstring');我节省了空间......虽然我不确定交叉点在哪里......将 ObjectIds 转换为字符串并返回给客户端,而不是使用 ObjectIds 而不是字符串来节省空间。