251_Mongodb_增删改查_增_删
【摘要】 增 删 操作
Mongodb 操作
1 通用操作数据库、集合
db # 显示当前数据库
use dataBaseName # 如果dataBaseName不存在,在插入数据时将会创建数据库
show dbs # 显示当前实例中的数据库
db.dropDatabase() # 删除当前选择的库
db.createCollection("runoob") # 显式的创建runoob集合
show tables # 显示当前数据库中的集合信息
show collections
db.runoob.drop() # 删除runoob集合
2 创建集合方式
- 1 直接插入文档
- 2 使用db.createCollection()
db.createCollection(<name>,<options>)
参数说明
name 创建的集合名词
options:
capped: 若设置为true, 必须搭配size使用,创建固定集合
size 搭配capped 使用,限制集合的大小, 文档超过设置的大小, mongodb会自动删除旧文档腾空间
max: 固定集合中可存文档数
validator 设置集合具有数据校验功能
validationlevel 校验时对现有文档的严格程度
autoindexid: 若设置为false, 不会自动将_id字段创建为索引 4.0后不能在local外数据库中设置该选项
storageEngine: 允许用户创建集合使用不同的存储引擎
indexOptionDefaults 设定索引使用的存储引擎
创建固定集合
db.createCollection( “bob” : {capped:true, size:2000, max:200}) #大小 2000 byte, 数量200
查询是否是capped
db.xxxName.isCapped()
删除集合
db.collection.drop({writeConcern: <document> } )
db.xxxx.drop()
查询集合
Show collections
Show tables
3 增_插入
新文档添加到集合中。如果该集合当前不存在,则插入操作将创建该集合。
- db.collection.insertOne() #插入单个文档
- db.collection.insertMany() #插入多个文档
- db.collection.insert() #插入单条或多个文档
插入操作行为影响:
- 自动创建不存在的集合、数据库,例如这里的inventory集合
- 如果不指定,自动生成主键_id及其值
- 写操作都是基于单个文档级别的原子操作
- 确认写操作级别,在分片集群中我们需要关注
MongoDB下新建文档的语法
db.collection.insert(
<document or array of documents>,
{
writeConcern: <document>,
ordered: <boolean>
}
)
documents必填,表示需要插入的文档/数组,可以是一个{doc}/多个文档[{doc1},{doc2},{doc3}]
writeConcern可选项,写入策略,集群时使用
ordered:是否有序插入,默认是True,表示多个文档是否按照文档顺序插入,若有序 MongoDB不再插入后续文档,若无序 继续插入后续文档
特点
1 如果没有指定数据库,自动创建一个test 数据库
2 没有指定集合,自动创建集合
3 没有指定 _id字段, 新增一个_id字段,objectId类型,且不能重复,可以是数字/字符串类型
db.inventory.insertOne(
{ item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" } }
)
db.inventory.insertOne(
{item: "nike" , qty: 200, tags:["cotton", "glass"], size: {h:30, w: 40, uon: "inch"}})
db.inventory.insertMany([
{ item: "journal", qty: 25, tags: ["blank", "red", "small"], size: { h: 14, w: 21, uom: "cm" } },
{ item: "mat", qty: 85, tags: ["gray", "yellow", "green"], size: { h: 27.9, w: 35.5, uom: "cm" } },
{ item: "mousepad", qty: 25, tags: ["gel", "blue", "big"], size: { h: 19, w: 22.85, uom: "cm" } }
])
db.inventory.insertMany([
{ item: "journal", qty: 25, size: { h: 14, w: 21, uom: "cm" }, status: "A" },
{ item: "notebook", qty: 50, size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
{ item: "paper", qty: 100, size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
{ item: "planner", qty: 75, size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
{ item: "postcard", qty: 45, size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]);
Save() 方法
与 insert不同的是, insert() 插入主键相同会报错, save()方法插入会覆盖相同主键的文档
语法
db.collection.save(<document>, {writeConcern: <document>})
操作同 insert()
4 删除操作
删除文档的方式
- db.collection.remove() 可以删除只读条件的文档
- db.collection.deleteMany()只能删除一个文档 类似 remove justone: false
- db.collection.deleteOne() 只能删除一个文档 类似 remove justone: true
remove(
<query>,{
justOne: <boolean>,
writeConcern: <document>,
collation: <document>
})
Justone 可选参数 默认false, 表示文档与删除条件匹配时, 是否仅删除第一个文档
False 表示删除匹配所有文档, ture 表示删除匹配第一个文档
# 删除
db.inventory.remove({"qty": 100}, {"justOne":true})
删除操作行为影响:
- 集合中的所有文档都被删除,索引不会删除
- 写操作都是单个文档级别的原子操作
删除文档的两种方式
# 删除
db.inventory.remove({"qty": 100}, {"justOne":true})
# 删除所有文档
db.inventory.deleteMany({})
db.inventory.deleteMany({status: "A"})
# 删除单个文档
db.inventory.deleteOne( { status: "D" } ) //条件{status: “D”}
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)