MongoDB设计 - 具有多个键的相同文档

时间:2012-10-12 11:16:38

标签: mongodb database nosql

我是MongoDB的新手,我对如何构建数据感到困惑。我需要做的是存储一组可以通过不同的键检索的对象。例如,我有对象“CustomerInfo”,它可以通过键“Customer1”,“Customer_1”,“Cust.1”,“Customer 1”等引用。

在RDMBS中,我将创建一个单独的表来存储别名,并为Customer Info数据创建一行。然后,我将使用客户提供的任何别名加入他们,并获取数据。它似乎简单明了,但到目前为止,我无法创建一个空数据库。在这种情况下,我对RDBMS的体验似乎更像是一种障碍,因为我倾向于“思考关系”而且(显然)不适用于NoSQL数据库。

欢迎提出任何建议,并提前感谢所有答案。

1 个答案:

答案 0 :(得分:4)

如果您无法从别名转换为应用程序内的实际ID(这始终是首选),则可以选择在MongoDB文档中存储“别名”数组并在其中编制索引:

存储文件如下:

db.customers {
    aliases : ["Customer1", "Customer_1", "Cust.1", "Customer 1"],
    ...other customer info data...
}

添加索引:

db.customers.ensureIndex({aliases:1})

然后只需查询其中任何一个,所有这些都将返回上面的文档:

db.customers.find({aliases: "Customer1"})
db.customers.find({aliases: "Customer_1"})
db.customers.find({aliases: "Cust.1"})
db.customers.find({aliases: "Customer 1"})

索引是可选的,但会显着提高性能。

相关问题