列转行模式

列转行模式

Content #

有电影上映信息的文档形式如下:

{
    title: "Dunkirk",
    ...
    release_USA: "2017/07/23",
    release_UK: "2017/08/01",
    release_France: "2017/08/01",
    release_Festival_San_Jose:
    "2017/07/22"
}

需要针对每个地区及时间的索引,这会导致索引的数量非常大。这时,如果文档本身的数量也很大的话,维护的成本就会很高。MongoDB中用哪种模式可以很好地解决这个问题?

使用列转行模式,将多个地区及时间放入一个数组中:

{
    title: "Dunkirk",
    ...
    releases: [
        {country: "USA", date: "2017/07/23"},
        {country: "UK", date: "2017/08/01"},
        ...
    ]
}

再创建如下索引:

db.movies.createIndex({releases.country:1, releases.date:1})

Viewpoint #

From #