如何在MongoDB集合中存储描述文档的元数据?

时间:2012-11-02 21:54:40

标签: mongodb indexing metadata database

在MongoDB中存储描述集合的元数据的最佳方法是什么?

我有一个集合,其中包含任意和不断变化的文档数量。在创建新文档时,我想根据当前集合中的文档数量分配一个新的临时名称(String),例如: “Doc 1”,“Doc 2”,...由于文档可以删除,只需执行count()就不会产生有用的结果。

一种选择是在不同的集合中存储描述集合的元数据,但这看起来很尴尬。

由于Mongo是无模式的,我可以将集合的元数据保存在集合本身中,可能位于名为“metadata”的文档中。在这种情况下,我如何快速访问该文档?我是否需要为“元数据”构建索引以立即获得它,而不需要O(n)搜索时间?

是否有比我在前一段中描述的更标准或更简单的方式?我可能会在未来获得更多元数据,而不仅仅是计数。

2 个答案:

答案 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'