在MongoDB中存储描述集合的元数据的最佳方法是什么?
我有一个集合,其中包含任意和不断变化的文档数量。在创建新文档时,我想根据当前集合中的文档数量分配一个新的临时名称(String),例如: “Doc 1”,“Doc 2”,...由于文档可以删除,只需执行count()就不会产生有用的结果。
一种选择是在不同的集合中存储描述集合的元数据,但这看起来很尴尬。
由于Mongo是无模式的,我可以将集合的元数据保存在集合本身中,可能位于名为“metadata”的文档中。在这种情况下,我如何快速访问该文档?我是否需要为“元数据”构建索引以立即获得它,而不需要O(n)搜索时间?
是否有比我在前一段中描述的更标准或更简单的方式?我可能会在未来获得更多元数据,而不仅仅是计数。
答案 0 :(得分:2)
您可以查看此链接https://docs.mongodb.com/v3.0/tutorial/create-an-auto-incrementing-field/。
根据上面的链接,我的意见是将它们存储在名为metadata
的集合中,格式为:
{
'_id':'collection1'
'c': 0,
'other metadata1': 'foo',
'other metadata2': 'bar'
}
然后,您可以根据集合名称获取这些元数据。 如果您想在此文档中添加字段,只需使用$set和更新。
答案 1 :(得分:2)
我们经常做的是将设置或元数据放在单独的单文档集合中.settings。 例如。如果您的数据位于集合'user'中,我将元数据放在'user.settings'
中