CouchDB中地址簿的最佳文档格式

时间:2010-04-23 15:44:07

标签: document couchdb nosql

我真的很努力,努力尝试但我无法理解couchdb :(我必须记录几个人的联系方式,我应该把每个联系人都放在一个文件中吗?

"1th documet"
{
 "names" : [
  Jake", "Lock"
 ]

 "numbers" : [
  "Jake's number", "Lock's number"
 ]
}

Future records:

"1th documet"
{
 "names" : [
  Jake", "Lock", "Kate", "Jin", ...
 ]

 "numbers" : [
  "Jake's number", "Lock's number", "Kate's number", "Jin's number", ...
 ]
}

或者在不同的文件中?

"1th document"
{
 "name" : "Jake"

 "number" : "Jake's number"
}

"2th document"
{
 "name" : "Lock"

 "number" : "Lock's number"
}

Future records:

"1th document"
{
 "name" : "Jake"

 "number" : "Jake's number"
}

"2th document"
{
 "name" : "Lock"

 "number" : "Lock's number"
}

"3th document"
{
 "name" : "Kate"

 "number" : "Kate's number"
}

"4th document"
{
 "name" : "Jin"

 "number" : "Jin's number"
}

...

我很困惑,有人能帮助我吗?

感谢。

1 个答案:

答案 0 :(得分:3)

我假设您正在存储这些联系人以形成某种地址簿样式的应用程序。按照这个假设,我会说你的第二个例子正是你想要做的。我看待它的方式,每个“联系人”都是一个单独的文件。此联系人的所有属性都属于文档。

{
    name: "John Smith",
    number: "+44 1234 567890"
}

为了更进一步,将来你可能会决定每个人存储多个号码,也许是不同类型的号码。我会将这些全部嵌入到特定联系人的文档中:

{
    name: "John Smith",
    numbers: [
        { number: "+44 1234 567890", type: "home" },
        { number: "+44 7798 987654", type: "mobile" },
        { number: "+44 1234 987123", type: "work" }
    ]
}

我发现设计用于文档数据库的模型的好方法是考虑您希望独立使用哪些项目。对于那些自己有意义的人来说,他们应该进入他们自己的文档。对于那些只在其“容器”对象的上下文中查看时才有意义的内容,将它们嵌入其中。

我希望这会对你有所帮助。