gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 23:10:16 25 4
gpt4 key购买 nike

我是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com