【问题标题】:Question about MongoDB from a SQL user来自 SQL 用户的关于 MongoDB 的问题
【发布时间】:2011-03-15 12:46:06
【问题描述】:

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

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

比方说,我有一张桌子摆满了品牌,我还有另一张桌子摆满了产品。

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

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

谢谢你启发我:)

【问题讨论】:

  • 检查 sriehl 的答案。我认为是正确的

标签: mongodb nosql


【解决方案1】:

一种方法是像这样设置它:

{'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 解决方案。

【讨论】:

  • 哦!好吧,所以你告诉我的是我的“关系”应该是我“对齐”我的模型的方式?从最高到最低,它会是这样的:博客->作者->文章->评论。这很符合逻辑!所以我总是有我需要使用的一切......感谢您的帮助:)
【解决方案2】:
  1. 插入品牌
  2. 插入插入产品(带品牌)
  3. 查询一下

准备工作:

  • 下载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 发布第一个答案之前,我才知道这一点(包括下载等)。不错的体验:)

【讨论】:

  • 感谢您的回答。但是,如果我需要重命名一个品牌怎么办?它是在整个数据库中创建了许多品牌条目还是仅引用它?
  • 重命名:db.things.update({"name": "L300" }, {"brand": "Mitsubishi", "name": "L300 4WD"}); 我想它只为一个对象保留一个条目并引用它。每个条目都包含 ObjectId "_id",这对我来说似乎一直都是一样的,所以我想它会更新这个条目,而不是删除和插入它。
  • @Tom:Tom,下载并使用它,以我的示例为起点,将它们复制并粘贴到 mongo 命令行(允许多行!)。你会更好地理解它,强烈推荐:)
  • 感谢您的帮助!在mongodb.org 上,您实际上可以在他们的 javascript 控制台上尝试一切!太棒了,现在我明白了!谢谢!!!
猜你喜欢
  • 2011-01-22
  • 1970-01-01
  • 2019-12-16
  • 2011-07-07
  • 2022-12-10
  • 2011-11-24
  • 2019-12-09
  • 2013-05-14
  • 2011-03-17
相关资源
最近更新 更多