mysql 与 MongoDB 逻辑关系对比,关系型数据库中的表和行
,分别对应 mongodb 数据库中的集合和文档
。
库操作
show dbs
:查看当前数据库列表use user
:两个含义,一个是创建名为user的数据库,一个是使用该数据库db
:查看当前数据库db.createCollection('表名')
:当前使用的数据库创建表show collections
:展示当前数据库下所有的数据表db.集合名.drop()
:删除数据表(集合),集合长得全部文档和集合相关的索引都会被删除db.dropDatabase()
删除数据库,数据库相应的文件也会被删除,磁盘空间将被释放
mongodb 默认有两个数据库,分别是存放管理员信息的 admin 数据库,用来做认证,和存放replication相关数据的数据库 local。
表操作(mongodb 中表称为集合)
插入文档
db.集合名.insertOne(<json对象>)
:集合中插入一条数据db.集合名.save(<json对象>)
:集合中插入一条数据,与inset 有一定的区别db.集合名.insertMany([<json对象>,<json对象>,<json对象>,<json对象>])
:集合中插入多条数据
insert 插入数据会默认分配一个id,此时如果在对相同的 id 插入数据时,会报错。 save 更加类似于更新而save方法不会报错,会更新相同的_id所在行数据的信息。
修改文档
db.表名.update(<查询的条件>,<更新的字段>)
修改一条记录可以用update 也可以用 updateOne
- 使用 updateOne 表示无论条件匹配多少条记录,始终只更新第一条;
- 使用 updateMany 表示条件匹配多少条就更新多少条;
- updateOne/updateMany 方法要求更新条件部分必须具有以下之一,否则将报错:
• unset
• pushAll/$pop
• pullAll
• $addToSet
db.users.updateOne({_id: 1}, {name: "白龙"}) // 报错
update 更新文档
● $push: 增加一个对象到数组底部
● $pushAll: 增加多个对象到数组底部
● $pop: 从数组底部删除一个对象
● $pull: 如果匹配指定的值,从数组中删除相应的对象
● $pullAll: 如果匹配任意的值,从数据中删除相应的对象
● $addToSet: 如果不存在则增加一个值到数组
删除文档
db.表名.remove(<条件>)
● remove 命令需要配合查询条件使用;
● 匹配查询条件的的文档会被删除;
● 指定一个空文档条件会删除所有文档;
db.users.remove( { _id : 1 } ) // 删除_id 等于1的记录
db.users.remove( { _id : { $lt : 3 } } ) // 删除_id 小于3的记录
db.users.remove( { } ) // 删除所有记录
db.users.remove() //报错
查询文档 find
• find 是 MongoDB 中查询数据的基本指令,相当于 SQL 中的 SELECT 。
• find 返回的是游标
db.users.find( { “_id” : 1} ) //单条件查询
db.users.find( { “_id” : 2, “name” : “冯佳兴” } ) //多条件and查询
db.users.find( { $and : [ {“name” : “冯佳兴”}, { “sex” : “男” }] } ) // and的另一种形式
db.users.find( { $or: [{"_id" : 2}, {“sex” : “男”}] } ) //多条件or查询
db.users.find( { “name” : /^冯/} ) //按正则表达式查找
查询条件对照表
查询逻辑对照表
查询逻辑运算符
● $lt: 存在并小于
● $lte: 存在并小于等于
● $gt: 存在并大于
● $gte: 存在并大于等于
● $ne: 不存在或存在但不等于
● $in: 存在并在指定数组中
● $nin: 不存在或不在指定数组中
● $or: 匹配两个或多个条件中的一个
● $and: 匹配全部条件
查询子文档
查询数组
查询数组中的对象
MongoDB 这些基本的增删改查操作你学会了没?如果错误,感谢留言回复!