嵌套文档上的mongodb crud

时间:2015-11-15 18:21:46

标签: mongodb crud

我试图找出从MEAN堆栈应用程序等客户端应用程序处理嵌套MongoDB文档的CRUD是否有最佳实践。答案不一定要特定于MongooseJS或直接连接到客户端的MongoDB,它更多的是关于概念。如何在嵌套文档上处理CRUD?

这是我的示例文档:

{
    "company":"Acme Industries",
    "website":"http://www.acme.com",
    "active":true,
    "contacts":[
        {
            "firstName":"Wile",
            "lastName":"Coyote",
            "dateCreated":"4/3/2015",
            "address":"123 Main St",
            "city":"Yuma",
            "state":"AZ",
            "postalCode":"84938",
            "phoneNumbers":[
                {
                    "Home":"(333) 555-8958",
                    "Cell":"(444) 940-3484"
                }
            ],
            "emailAddresses":[
                {
                    "Home":"wile@coyote.com",
                    "Work":"info@acme.com"
                }
            ]
        }
    ]
}

我的客户端应用程序将具有这些不同形式的界面:

  1. 添加/编辑公司
  2. 添加/修改联系人
  3. 添加/编辑电话
  4. 添加/编辑电子邮件地址
  5. 我知道为每个嵌套文档创建子模式。这比仅仅管理根文档的每个节点中的子数据更好吗?

    似乎这需要与关系模式类似地处理,在关系模式中,我为需要管理的每个独立区域创建4个不同的CRUD方案。或者,还有更好的方法?似乎没有关于如何做到这一点的明确文档。

1 个答案:

答案 0 :(得分:0)

对于嵌套的东西,我通常会分别创建子模式,然后根据id将它们链接到正确的文档(将联系模式设置为有一个名为userId的字段,它等于当前用户的mongoId) 。这可能只是通过减少你必须处理的巢数来帮助编辑。

如果没有,$ push(添加)和$ set(编辑)是很棒的朋友。