设计具有可变字段的mongodb模式

时间:2015-04-13 02:41:10

标签: mongodb schema

我正在学习mongodb并按照以下要求尝试:

数据在平面文件中格式化为:

id: number
user: string
filename1: string
filename1:id: number
filename1:attribute1: number
filename1:attribute2: number
filename1:attribute3: number

filename2: string
filename2:id: number
filename2:attribute1: number
filename2:attribute2: number
filename2:attribute3: number

...

filename_n: string
filename_n:id: number
filename_n:attribute1: number
filename_n:attribute2: number
filename_n:attribute3: number

文件名在名称和计数方面都有所不同。每个文件名的属性是固定的。有多个用户。

我需要能够根据属性值进行查询。

我在这里找到了一个相关的问题: How to get a specific embedded document inside a MongoDB collection?

想知道最好的架构是针对我的要求的。

或者mongodb是个不错的选择吗?

1 个答案:

答案 0 :(得分:1)

mongodb中没有架构,您可以根据需要更改文档的存储方式,您可以尝试按用户进行操作,其中文件名是一个大小不同的数组,并且因为属性是固定的大小,然后您可以指定固定的属性集,您可以在其中查询文件[X] .attribute value。

{
  "id": "44",
  "user":"Jack Smith",
  "files":[
            {
              "name":"filename1",
              "id":"21",
              "attribute1":  "4444",
              "attribute2":  "5555",
              "attribute3":  "7777",
              "attribute4":  "8888"
            },
            {
              "name":"filename2",
              "id":"55",
              "attribute1":  "1111",
              "attribute2":  "3333",
              "attribute3":  "9999",
              "attribute4":  "80000"
            },
            {
              "name":"filename3",
              "id":"33",
              "attribute1":  "4444",
              "attribute2":  "5555",
              "attribute3":  "7777",
              "attribute4":  "8888"
            },
          ..............
            {
              "name":"filenamen",
              "id":"45",
              "attribute1":  "4444",
              "attribute2":  "5555",
              "attribute3":  "7777",
              "attribute4":  "8888"
            }
          ]
}