【问题标题】:MongoDB design advice needed需要 MongoDB 设计建议
【发布时间】:2011-11-13 17:05:22
【问题描述】:

我用 PHP 和 MySQL 构建了一个 API。我想将数据库迁移到 MongoDB,但需要一些有关设计的建议。

API 包含用户和朋友。我为用户准备了一张桌子,为朋友(连接)准备了一张桌子。

用户

- id
- firstname
- lastname
- email
- password

朋友

- id
- user_id
- friend_id

我正在考虑在 MongoDB 中使用这种设计,即使用户有 1000 个朋友,这是一个好方法吗?

用户

- id
- firstname
- lastname
- email
- password
-- Friends
--- ID of friend #1
--- ID of friend #2
--- ID of friend #3

那么我可以使用朋友 ID 来获取朋友的整个文档吗?这样好吗?

【问题讨论】:

    标签: php mongodb schema


    【解决方案1】:

    是的;这将是正确的方法。这本书解释了更多的确切方法:

    Free Mongo DB Book

    作者谈到没有加入和使用经理/员工关系。如果你有。

    非常出色的读物,它也可以回答您的其他问题。

    这是我所指的具体 sn-p:

    数组和嵌入式文档
    仅仅因为 MongoDB 没有连接并不意味着它没有一些技巧 袖子。记得我们很快看到 MongoDB 支持数组作为第一类对象 的文件?事实证明,这在处理多对一或 多对多的关系。举个简单的例子,如果一个员工可以有两个经理, 我们可以简单地将它们存储在一个数组中:

    db.employees.insert({_id: ObjectId("4d85c7039ab0fd70a117d733"), name: 'Siona',
    manager: [ObjectId("4d85c7039ab0fd70a117d730"), ObjectId("4
    d85c7039ab0fd70a117d732")] }
    

    特别有趣的是,对于某些文档,manager 可以是一个标量值,而对于 其他的它可以是一个数组。

    祝你好运!

    【讨论】:

    • 另一件事。该文档在处理得很大之前可以容纳多少个“朋友对象”。 200大吗?
    • 您可以使用这种设计,因为应用程序需要验证关系,例如删除用户后,必须将其从包含引用的所有用户的好友列表中删除。
    猜你喜欢
    • 2013-11-26
    • 2020-04-22
    • 2014-10-22
    • 1970-01-01
    • 2017-08-29
    • 1970-01-01
    相关资源
    最近更新 更多