有关SQL用户的MongoDB的问题

时间:2010-07-13 19:54:26

标签: mongodb nosql

我对使用MongoDB非常感兴趣,看起来很棒。但我来自一所完全不同的学校:关系数据库。

所以现在我想知道这个案例如何与MongoDB一起使用:

说,我有一个装满品牌的桌子,我还有另一张装满产品的桌子。

每个产品都有一个品牌。这很容易理解,但我仍然不明白它如何与MongoDB一起使用?

我的意思是,每次添加产品时我都必须重复这个品牌吗?我可以做某种关系吗?

感谢您的启发:)

2 个答案:

答案 0 :(得分:3)

一种方法是将其设置为类似于:

{'brand':'brand one', 'products':
                       [{'product name':'a fine product','price':'$50'},
                        {'product name':'yet another fine product','price':'$20'}]
},
{'brand':'brand two', 'products':
                       [{'product name':'brand two product','price':'$10'}]
}

在这种情况下,您只有一个“表格”,其中包含您在产品上所需的所有信息(包括品牌)。我只做了一些mongodb的实验,所以我不确定这会如何扩展。

这是一种与关系数据库不同的思维方式,并且不应该在所有情况下使用nosql解决方案。

答案 1 :(得分:2)

  1. 插入品牌
  2. 插入插入产品(带品牌)
  3. 查询
  4. 的制备:将

    • 下载http://www.mongodb.org/downloads
    • 在Windows上创建目录c:\data\db\(默认目录,现在不关心它)
    • 运行mongod(它将运行服务器)
    • 运行mongo(它将运行客户端并使用默认测试数据库)

    品牌:

    db.things.save({'name': 'Ford'});
    db.things.save({'name': 'Mitsubishi'});
    

    产品:

    db.things.save({'brand': 'Ford', 'name': 'Mustang'});
    db.things.save({'brand': 'Ford', 'name': 'Falcon'});
    db.things.save({'brand': 'Mitsubishi', 'name': 'Delica'});
    db.things.save({'brand': 'Mitsubishi', 'name': 'L300'});
    

    查询:

    db.things.find();
    db.things.find({'brand': 'Ford'});
    db.things.find({'brand': 'Mitsubishi'});
    

    //我刚刚在tutorialmanual发布第一个答案之前就已经学会了这个(包括下载等)。不错的经历:)