mysql - mongoDB 和 MySQL 中的产品/类别管理

标签 mysql mongodb

我是 mongoDB 的新手。我写了一个简单的应用程序来管理产品。我使用 mongoDB。这是我的数据库

类别 集合:

db.category.insert({id:1,name:"Motor",description:"Sell Motor"})
db.category.insert({id:2,name:"Car":description:"Sell Car"})

产品集合:

db.product.insert({id:1,name:"Honda CBR",price:15000,id_category:1})
db.product.insert({id:2,name:"Kawasaki ",price:16000,id_category:1})
db.product.insert({id:3,name:"Ford", price:50000,id_category:2})

我想找到 ProductCategory 名称是 Motor,我必须编写树查询:

var result =  db.category.find({name:"Motor"})
var cat = result.next().id
db.product.find({id_category:cat})

在 MySQL 中,我可以用两个表做同样的事情:

CREATE TABLE `product_manage`.`category`(  
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(2000),
`description` VARCHAR(2000),
PRIMARY KEY (`id`)
);

CREATE TABLE `product_manage`.`product`(  
`id` INT NOT NULL,
`name` VARCHAR(2000),
`price` INT,
`id_category` INT,
PRIMARY KEY (`id`)
);

所以我不知道在这个例子中MongoDB比MySQL有什么优势。 我想再问一些:

在 MySQL 中:

情况一:

select id into @id_cat where name="Motor"
select * from product where id_category = @id_cat

情况 b:

select p.id,p.name,p.price from product p,category where p.id_category = category.id
and category.name = "Motor"

哪种情况对性能有好处?

最佳答案

mongodb 的优势将根据您的要求进行描述。在您使用类别名称显示产品的情况下,您必须在两个表之间进行连接,这会对性能产生一定影响。在 mongodb 的情况下,您可以有一个名为 Product 的文档,您将在其中嵌入 Category。像这样

   {Id : 1 , "Name" : "hello mongodb" , Category : { "Id" : 1 , "Name" : "DB }}

现在只需一次查询即可获得产品及其类别。即使你可以像

这样搜索子文档
          db.Collection.find({ Category.Id : 1 })

您将通过一次查询获得所有产品。如果您在 Category 中有更多详细信息,请在 Product 集合中保留一些您经常与产品一起显示的详细信息,同时我们将在 Category Collection 中包含详细信息。

你可以自己弄清楚,即使类别名称和id之类的数据在产品的所有文档中都是重复的,使用这种模式设计在mongodb中性能会好得多。

关于mysql - mongoDB 和 MySQL 中的产品/类别管理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20090643/

相关文章:

php - 如何更改 WAMPSERVER 中的 'ft_min_word_len'?

带有嵌入式文档的 MongoDB 数据库设计

mongodb - 从 Java API 取消 MongoDB 查询

javascript - Mongoose Model.remove(callback) 不会从我的收藏中删除任何东西

node.js - NodeJS/MongoDB - 字段仅添加一次?

php - 即使页面存在,mod_rewrite 中的最后一条规则也会返回 404

php - 使用 PHP、Zend 将表数据导出到 CSV

mysql - 添加 SQL 数据库中的值并使用 PHP 将它们显示在表格中

php - 表单数据未插入到 MySQL 表中

node.js - 我可以使用按位运算符来请求 Loopback 模型吗?