MongoDB增删改查与传统型数据库的比较

传统型数据库的缺点:

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%")

子查询:

 数组查询:

 

 普通查询:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值