MongoDB 基础操作

守給你的承諾、 提交于 2020-12-29 12:45:50

 - 启动MongoDB 默认端口27017

mongod --dbpath "数据库目录"

 - 查看所有存在磁盘上的数据库

show dbs

 -  创建数据库或切换数据库 (使用了不存在的对象即创建该对象)

use 数据库名

 - 查看当前数据库存在磁盘上的数据表

show tables

 - 创建表

数据库名.表名

 - 添加 insert

use locals # 创建数据库
db.user.insert() # 创建表(user) + 添加 insert({})
show dbs  # 查看数据库是否创建
# 官方推荐写法
db.user.insertMany([{}]) # 添加多条数据 [{},{},{}]
db.user.insertOne({}) # 添加一条

 - 查看  find

db.user.find()
# 推荐用
db.user.findOne({})
# 并列条件查询
db.user.find({"id":1,"age":20})

# 或条件查询 $or
db.user.find({$or:[{age:20},{name:"jam"}]})
# 同一个字段的 或查询 $in
db.user.find({age:{$in:[20,30,40]}})
 # 满足全部条件查询 $all
db.user.find({age:{$all:[20,10,30]}})
# 数学比较符
db.user.find({age:{$gt: 73}})
$gt : 大于 
$gte: 大于等于
$lt : 小于
$lte: 小于等于
$eq : 等于

 - 数据类型

MongoDB中的数据类型:

 Object  ID :Documents 自生成的 _id

"_id" : ObjectId("5b151f8536409809ab2e6b26")

#"5b151f85" 代指的是时间戳,这条数据的产生时间
#"364098" 代指某台机器的机器码,存储这条数据时的机器编号
#"09ab" 代指进程ID,多进程存储数据的时候,非常有用的
#"2e6b26" 代指计数器,这里要注意的是,计数器的数字可能会出现重复,不是唯一的
#以上四种标识符拼凑成世界上唯一的ObjectID
#只要是支持MongoDB的语言,都会有一个或多个方法,对ObjectID进行转换
#可以得到以上四种信息

#注意:这个类型是不可以被JSON序列化的

这是MongoDB生成的类似关系型DB表主键的唯一key,具体由24个字节组成:

0-8字节是时间戳,

9-14字节的机器标识符,表示MongoDB实例所在机器的不同;

15-18字节的进程id,表示相同机器的不同MongoDB进程。

19-24字节是计数器

 
View Code

 String: 字符串,必须是utf-8

 Boolean:布尔值,true 或者false (这里有坑哦~在我们大Python中 True False 首字母大写)

 Integer:整数 (Int32 Int64 你们就知道有个Int就行了,一般我们用Int32)

 Double:浮点数 (没有float类型,所有小数都是Double)

 Arrays:数组或者列表,多个值存储到一个键 (list哦,大Python中的List哦)

 Object:如果你学过Python的话,那么这个概念特别好理解,就是Python中的字典,这个数据类型就是字典

 Null:空数据类型 , 一个特殊的概念,None Null

 Timestamp:时间戳

 Date:存储当前日期或时间unix时间格式 (我们一般不用这个Date类型,时间戳可以秒杀一切时间类型)

 - 更新 update 

db.user.update({"age":20}, {$set:{"name":"lee"}})
# ({"条件"},{"关键字":{"修改内容"}}) 如果条件为空,那么将会修改Collection中所有的数据
# 推荐写法
db.user.updateOne({"name":"lee"},{$set:{"age":20}}) # 改条件匹配的第一条
db.user.updateMany({"name":"lee"},{$set:{"age":18}}) # 改全部

 - 删除  remove / delete

#db.user.remove({"age":20})

# 推荐写法
db.user.deleteOne({"name":"lee"}) # 删除 条件匹配第一条
db.user.deleteMany({"name":"jam"}) # 删除  条件匹配的全部

 - 修改器

   - $set :修改 

db.user.updateOne({"name":"lee"},{$set:{"age":20}})

   - $unset: 强制删除字段

db.user.updateOne({"name":"lee"},{$unset:{"age":1}}) # 1也可以写成true 只要看到age字段就会删除

   - $ inc: 引用增加 在原有值的基础上增加

db.user.updateMany({},{$inc:{age:1}}) # 减少即为 -1

    -  针对array的修改器(python列表):

   - $push 增加元素 

db.user.updateOne({"name":"lee"},{$push:{"hobby":"篮球"}})

   -  $pull 删除元素

db.user.updateOne({"name":"lee"},{$pull:{"hobby":"篮球"}})

   - $pushall 迭代添加

db.user.updateOne({"name":"lee"},{$pull:{"hobby":["篮球","足球"]}})

   - $pop 删除第一条 / 最后一条 数据

db.user.updateOne({"name":"lee"},{$pop:{"hobby":1}}) # 最后一条
db.user.updateOne({"name":"lee"},{$pop:{"hobby":-1}}) # 第一条

 - $ 字符 存储符合条件的元素下表索引

 - Object操作 (字典直接 。字段就行 )

db.user.updateOne({"info.name":"jam"},{$set:{"info.age":20}})

 - Array中嵌套object

db.user.updateOne({"hobby.age":30},{$set:{"hobby.$.age":25}})

 - Object中嵌套Array

db.user.updateOne({"kecheng.class":1},{$set:{"kecheng.class.$":2}})

 - 跳过

db.user.find({}).skip(5) # 跳过五条数据

 - 分页

db.user.find({}).limit(5)  # 只显示5条数据

 - 排序

db.user.find({}).sort({age:1}) # 正序
db.user.find({}).sort({age:-1}) # 倒序

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!