- 启动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字节是计数器
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}) # 倒序
来源:oschina
链接:https://my.oschina.net/u/4327463/blog/4064560