在MongoDB中对相关类型的文档进行分组

时间:2012-05-26 03:19:31

标签: mongodb

好的我是MongoDB的新手,并开始阅读MongoDB Definitive指南。 我在第7页,它说:“将相关类型的文档组合在一起”

我不明白:(文件类似于

{"greetings" , "Hello World"} 

那句话是什么意思呢?你能不能给我一个更详细的例子,这样我就可以想象一下。感谢

2 个答案:

答案 0 :(得分:1)

文档实际上更像是:{"greetings": "Hello World"}

在这种情况下,它是一个非常简单的文档,只包含一个键“问候”,其值为“Hello World”。有些语言可能将其称为关联数组,哈希或字典。这个描述的要点是MongoDB不关心结构是什么。它的方案是免费的,并不要求您确保集合中的每个文档具有完全相同的结构。但出于效率和组织目的,您倾向于将类似文档存储在单个集合中。因此,从纯粹的设计角度来看,每个集合最终会得到非常相似的文档。

MongoDB中的文档或多或少类似于JSON结构(bson具体)。它可以是任意深度,您可以在选定的对象级别创建索引,以便更快地进行搜索。

在大多数情况下,只需将mongodb视为奇特的对象存储,其中的对象代表您熟悉的任何语言。特定于您的语言的驱动程序将处理本机对象类型与mongodb中的bson表示之间的桥梁。您可以创建对象并存储它们。它与理解mysql并不完全不同,但知道您不必定义表模式。只需开始存储你想要的东西。

答案 1 :(得分:1)

实际上,文档更像是

{“问候”:“Hello World”}

表示文档包含问候语(键),问候语为“Hello World”(值)。 文档可以是一组非常复杂的键值对,包括数组,嵌入文档等值。

如果在同一个集合中包含一堆任意文档,以后很难找到它们。因此,建议将对具有共同点的集合文档进行分组。

一个相关的例子可能是拥有一个集合,其中每个文档代表系统的用户。每个文档中的字段将根据您对每个用户的信息量而有所不同,但至少您可能有一个电子邮件地址,名称等。然后,您可以查询满足某些条件的所有用户。

另一个系列可能有公司。您可能有一组用户或用户ID作为公司文档中的一个字段,以表示在公司工作的每个用户,或类似的东西。

我对你提到的这本书并不熟悉,但也许如果你继续前进,它会开始变得更有意义。如果不是,我建议您阅读一些页面here以获取更多示例。