传统型数据库的缺点:
1、数据结构要求高,必须遵循三大范式
2、存在join这样的多表查询,使得数据库在扩展方面很艰难
3、企业级数据库的license价格贵,并且随着系统的规模,不断上升
MongoDB的优势,面向集合存储、动态查询、文件存储格式为Bson、完全索引
| MySQL | MongoDB |
| Table | Collection |
| Row | Document |
| Column | Field |
| Joins | Embedded documents, linking |
| MySQL | MongoDB |
| INSERT INTO users (user_id, age, status) VALUES ('bcd001', 45, 'A') | db.users.insert({ user_id: 'bcd001', age: 45, status: 'A' }) |
| SELECT * FROM users | db.users.find() |
| UPDATE users SET status = 'C' WHERE age > 25 | db.users.update( { age: { $gt: 25 } }, { $set: { status: 'C' } }, { multi: true } ) |
增删改查:
增 insert :
insertOne
insertMany

删除:
remove/deleteOne/deleteMany
https://docs.mongodb.com/manual/reference/delete-methods/#additional-deletes
drop
https://docs.mongodb.com/manual/reference/method/db.collection.drop/
dropDatabase
https://docs.mongodb.com/manual/reference/method/db.dropDatabase/
改 update:


查 find:

| 查询条件 | MongoDB | MySQL |
| $and | db.inventory.find( { status: "A", qty: { $lt: 30 } } ) | SELECT * FROM inventory WHERE status = "A" AND qty < 30 |
| $in | db.inventory.find( { status: { $in: [ "A", "D" ] } } ) | SELECT * FROM inventory WHERE status in ("A", "D") |
| $lt | db.inventory.find( { status: "A", qty: { $lt: 30 } } ) | SELECT * FROM inventory WHERE status = "A" AND qty < 30 |
| $or | db.inventory.find( { $or: [ { status: "A" }, { qty: { $lt: 30 } } ] } ) | SELECT * FROM inventory WHERE status = "A" OR qty < 30 |
| and & or | db.inventory.find( { status: "A", $or: [ { qty: { $lt: 30 } }, { item: /^p/ } ] } ) | SELECT * FROM inventory WHERE status = "A" AND ( qty < 30 OR item LIKE "p%") |
子查询:

数组查询:


普通查询:

本文探讨了传统型数据库如MySQL与NoSQL数据库MongoDB之间的区别。传统数据库要求严格的数据结构,支持复杂的JOIN操作,但扩展性较差且授权费用高昂。而MongoDB则以其灵活的文档存储、动态查询、Bson文件格式和丰富的索引功能脱颖而出。MongoDB的增删改查操作更为简洁,支持嵌入式文档和链接,提供了更高效的查询方式,如$in、$lt等,适用于处理大规模数据和复杂查询场景。

被折叠的 条评论
为什么被折叠?



