代码之家  ›  专栏  ›  技术社区  ›  Caio

CouchDB中通讯簿的最佳文档格式

  •  2
  • Caio  · 技术社区  · 14 年前

    我真的试过了,试过了,但是我不明白怎么回事:(我必须记录下几个人的联系方式,我应该把每个联系方式都放在一个文件里吗?

    "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 回复  |  直到 14 年前
        1
  •  3
  •   Mark Embling    14 年前

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

    {
        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" }
        ]
    }
    

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

    希望这对你有帮助。