MongoDB基础操作
一、数据库操作
# 1.显示数据库
show dbs
show databases
# 2.创建数据库或使用数据库
use db # 注意: db 存储值后,才会在show dbs命令下显示
# 3.查看当前数据库
db
# 4.删除当前的数据库
db.dropDatabase()
二、集合操作
注意:一般不手动创建集合,向不存在的集合第一次加入数据时,集合会被自动创建出来
# 1.创建集合
db.createCollection('集合名称')
db.createCollection('集合名称', {capped: true, size: 10})
参数capped: 默认值为false表示不设置上下,值为true表示设置上限
参数size: 当capped为ture时,需要指定此参数,表示上限大小,当文档达到上限时,会覆盖之前的数据,单位为字节
# 2.查看集合
show collections
# 3.删除集合
db.集合名称.drop()
三、数据类型
ObjectID: 文档ID
String: 字符串,必须是utf-8
Boolean: 存储一个布尔值, true false
Integer: 整数可以是32或64取决于服务器
Double: 浮点型
Arrays: 数组或列表, 多个值存储到一个键
Object: 用于嵌入式的文档, 即一个值为一个文档
Null: 存储Null值
Timestamp: 时间戳,表示从1970-1-1到现在的总秒数
Date: 存储当前的日期或时间的UNIX的时间格式
注意:
1.创建日期的格式如下
new Date('YYYY-MM-DD')
2.ObjectID
每个文档都有一个_id属性, 保存每个文档的唯一性(相当于MySQL的主键)
可以自己去设置_id插入文档,如果没有提供,那么MongoDB为每个文档提供一个独特的_id,类型为ObjectID()
ObjectID是一个12字节的十六进制数
前4个字节为当前的时间戳
接下来3个字节的机器ID
接下来2个字节中MongoDB的服务进程id
最后3个字节是简单的增量值
好吧,现在关于ObjectID的字节数量,不确定
四、插入文档
db.集合名称.insert(document)
# 文档自动生成_id
db.stu.insert({name: 'tom', age: '24'})
# 设置_id
db.stu.insert({_id: '20191122', name: 'bob', age: 12})
# 注意:插入文档时,如果不指定_id参数。MongBD会为文档分配一个唯一的ObjectID
五、保存文档
db.集合名称.save(document)
如果文档_id存在,则修改文档,如果不存在,则插入文档
实例
db.stu.save({"_id" : ObjectId("5dd765df2fe79d143d09716d"), "name" : "tom", "age" : "10"})
六、查询文档(简单)
db.stu.find()
复杂的查询,稍后更新
七、更新文档
db.集合名称.update(<query>, <update>, {multi: <Boolean>})
参数query: 查询条件
参数update: 更新操作符
参数multi: 可选,默认false, 表示只更新找到的第一条记录,值为true表示把满足条件的文档全部更新
db.集合名称.update({name: 'tom'}, {name: 'hr'}) # 替换整条记录
db.stu.update({name: 'tom'}, {$set: {name: 'hehe'}}) # 更新一条记录
db.stu.update({age: 24}, {$set: {name: 'hihi'}}, {multi: true}) # 全部更新
八、删除文档
db.集合名称.remove(<query>, {justOne: <Boolean>})
参数query: 删除的文档的条件
参数justOne: 可选, 如果设为true或1, 则只删除一条,默认为false,表示删除多条
# 例子
db.集合名称.remove({name: 'tom'}) # 删除name值为tom的所有文档
db.集合名称.remove({name: 'tom'}, {justOne: true}) # 删除一条记录
注意:
save()和update()的区别
save()可以修改字段名称或添加数据
update()修改或添加数据
练习数据
db.stu.insert({name: '郭靖', hometown: '蒙古', age: 20, gender: true})
db.stu.insert({name: '黄蓉', hometown: '桃花岛', age: 18, gender: false})
db.stu.insert({name: '华筝', hometown: '蒙古', age: 18, gender: false})
db.stu.insert({name: '黄药师', hometown: '桃花岛', age: 40, gender: true})
db.stu.insert({name: '段誉', hometown: '大理', age: 16, gender: true})
db.stu.insert({name: '段王爷', hometown: '大理', age: 45, gender: true})
db.stu.insert({name: '洪七公', hometown: '华山', age: 40, gender: true})
网友评论