相关请求MySQL,MongoDB中的模拟

好日子亲爱的同事们,我决定将一些项目从MySQL迁移到MongoDB并面临一些困难: 例如,MySQL中有两个表: 用户:
CREATE TABLE `testdb`.`users` (
`id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 55 ) NOT NULL ,
`password` VARCHAR( 32 ) NOT NULL
) ENGINE = MYISAM
规则:
CREATE TABLE `testdb`.`rules` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`uid` INT NOT NULL ,
`title` VARCHAR( 155 ) NOT NULL ,
`points` INT NOT NULL
) ENGINE = MYISAM 
现在选择属于特定用户的所有“规则”我可以发出SQL请求:
SELECT r.`title`, r.`points` FROM `rules` r, `users` u WHERE r.`uid` = u.`id` AND u.`id` = '123'
到目前为止,我无法弄清楚如何在MongoDB中做同样的事情,请你解释并提供一个例子。 附:我在pymongo的帮助下在Python中实现 P.P.S.我还想在ORM mongoengine或mongokit的帮助下看到解决这个问题的替代方法。 先感谢您:)     
已邀请:
MongoDB不支持连接,不像RDBMS和mysql一样。这是因为MongoDB不是关系数据库。因此,以与在RDBMS中相同的方式在MongoDB中建模数据通常是一个坏主意 - 您必须以完全不同的思维模式设计模式。 例如,在这种情况下,在MongoDB中,每个用户可以拥有1个文档,每个用户的规则都嵌套在其中。 例如
{
    "ID" : 1,
    "name" : "John",
    "password" : "eek hope this is secure",
    "rules": [
        {
            "ID" : 1,
            "Title" : "Rule 1",
            "Points" : 100   
        },
        {
            "ID" : 2,
            "Title" : "Rule 2",
            "Points" : 200
        }
    ]
}
这意味着,您只需要一次读取就可以撤回用户及其所有规则。 一个很好的起点是Mongodb.org关于Schema Design的参考 - 我上面谈到的是嵌入对象。     

要回复问题请先登录注册