我正在开发一个创建永久链接的应用程序。我不知道如何将文档保存在 MondoDB 中。两种策略:
-
ObjectId 自动生成
MongoDB 自动生成_id
。我需要创建一个索引permalink
字段,因为我通过永久链接获取信息。我还可以使用以下命令访问 ObjectId 的创建时间getTimestamp()
方法,所以datetime
fields 似乎是多余的,但如果我删除这个字段,我需要两次调用 MongoDB,一次获取信息,另一次获取时间戳。
{
"_id": ObjectId("5210a64f846cb004b5000001"),
"permalink": "ca8W7mc0ZUx43bxTuSGN",
"data": "a lot of stuff",
"datetime": ISODate("2013-08-18T11:47:43.460+-100")
}
-
生成_id
我生成_id
与永久链接。
{
"_id": "ca8W7mc0ZUx43bxTuSGN",
"data": "a lot of stuff",
"datetime": ISODate("2013-08-18T11:47:43.460+-100")
}
我看不出使用 ObjectId 有任何优势。我错过了什么吗?
ObjectId
s 适用于集合中的每个文档没有唯一键的情况。它们是独一无二的,因此您不必担心冲突,并且它们在大型部署中分片相当好,无需太多担心(它们各有利弊,阅读更多here).
The ObjectId
还包含客户端的时间戳ObjectId
已生成(除非数据库服务器配置为生成所有密钥)。这样,正如您所注意到的,您可以使用时间戳来执行一些日期操作。但是,如果您计划使用聚合框架,您会发现无法使用ObjectId
当前在任何日期操作中(issue)。如果您想使用 AF,您将需要第二个包含日期的字段,不幸的是,它与ObjectId
的内在价值。
如果您可以放心_id
你生成的是唯一的,那么没有太多理由使用ObjectId
在你的数据结构中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)