MongoDB结构和JSON,它们不一样吗?

时间:2015-07-01 12:27:20

标签: json mongodb

假设我有一个json对象:

Object = {
param1: '',
param2: '',
param3: '',
param4: {
    paramA: '',
    paramB: '',
    paramC: '',
    paramD: [AnotherJsonObject1,AnotherJsonObject2]
    }
}

我的MongoDB结构会不相似?这种类型的结构会使数据(或其中一些)不那么容易搜索吗?

修改1:

  1. 通过较少搜索,我的意思是:如果顶级实体具有子实体,这些子实体本身具有子实体,依此类推。我是否能够以与顶级效率相同的效率到达最低级别的实体?

  2. 我目前在网站上严重依赖JSON文件。这些文件不需要索引为可搜索的,但它们在逻辑上适合数据库。

  3. 例如:我有一个导演,导演有他创作的电影列表,这个列表中的每部电影都有自己的演员列表,每个演员都有一个生物。

    此示例中的bio不需要编入索引。我可以只包含一个包含actor的bio的文件的链接,但是我想知道我是否可以将它添加到DB中,因为这样它将全部符合逻辑,或者“不必要的”数据会损害db的能力有效地执行。

1 个答案:

答案 0 :(得分:2)

Mongodb以BSON格式存储文档。它看起来与JSON结构类似。

您解释的结构似乎是嵌套文档的正确用例。 您可以使用.运算符

查询嵌套字段
  

这种类型的结构会使数据(或其中的一部分)更少   搜索?

这取决于您的嵌套数据结构和这些字段上的查询类型。在嵌套文档中,嵌套结构情况可能存在一些限制或查询可能会更复杂一些。但是,就嵌套文档的可搜索性而言,它完全取决于您的用例。

例如。

director:[movies:[{movieName:"movie1", actors:[{firstName:"will", lastName:"smith"}, {firstName:"bruce", lastName:"willis"}]}]]

在上面的场景中,如果您搜索导演,其中任何定向影片都有具有firstName的actor,而且作为smith的lastName可能会变得有点复杂。

像一个简单的查询 {director.movies.actors.firstName:"will", director.movies.actors.lastName:"smith"}

可能会返回错误回复

文档:director:[movies:[actors:actors:[{firstName:"will", lastName:"willis"}, {firstName:"bruce", lastName:"smith"}]]]

也将是一场积极的比赛。

此外,像firstName!="bruce"这样的否定查询也将返回两个文档。

您可能希望浏览相同的mongodb文档

对于第一种情况,您可以参考elemMatch