mongodb基本操作,常用增删改查
1.显式创建集合
db.createCollection(“users”)
db.createCollection("users")
{ ok: 1 }
rs0 [direct: primary]
2.隐式创建集合
db.users1.insert({name:“23123”})
db.users1.insert({name:"23123"})
'DeprecationWarning: Collection.insert() is deprecated. Use insertOne, insertMany or bulkWrite.'
{ acknowledged: true,
insertedIds: { '0': ObjectId("60c023bc64f1792e535a7a48") } }
rs0 [direct: primary]
3.删除集合
db.users1.drop()
db.users1.drop()
true
rs0 [direct: primary]
4.查看集合
show collections
show collections
test
users
orders
rs0 [direct: primary]
5.新增记录
1-单个文档
语法格式:
db.<集合>.insert()
db.<集合>.insertOne()
db.<集合>.save()
示例:db.shop.insert({name:“家电”,price:4000})
db.shop.insert({name:"家电",price:4000})
{ acknowledged: true,
insertedIds: { '0': ObjectId("60c024ed64f1792e535a7a49") } }
rs0 [direct: primary]
2-多个文档
语法格式 db.<集合>.insertMany([,…])
示例:db.shop.insertMany([{name:“手机”,price:3000},{name:“电脑”,price:6000},{name:“日用百货”,price:50}])
db.shop.insertMany([{name:"手机",price:3000},{name:"电脑",price:6000},{name:"日用百货",price:50}])
{ acknowledged: true,
insertedIds:
{ '0': ObjectId("60c0258a64f1792e535a7a4a"),
'1': ObjectId("60c0258a64f1792e535a7a4b"),
'2': ObjectId("60c0258a64f1792e535a7a4c") } }
rs0 [direct: primary]
6.通用查询语法格式
常用参数
db.find(,[projection]) 说明:
query:可选,查询筛选器,JSON对象.
projection:可选,结果字段
例:
db.shop.find() //查询所有
db.shop.find()
{ _id: ObjectId("60c024ed64f1792e535a7a49"),
name: '家电',
price: 4000 }
{ _id: ObjectId("60c0258a64f1792e535a7a4a"),
name: '手机',
price: 3000 }
{ _id: ObjectId("60c0258a64f1792e535a7a4b"),
name: '电脑',
price: 6000 }
{ _id: ObjectId("60c0258a64f1792e535a7a4c"),
name: '日用百货',
price: 50 }
rs0 [direct: primary]
db.shop.find({“name”:“手机”}) //单条件查询
db.shop.find({"name":"手机"})
{ _id: ObjectId("60c0258a64f1792e535a7a4a"),
name: '手机',
price: 3000 }
rs0 [direct: primary]
db.shop.find({“name”:“手机”,“price”:3000}) //多条件查询,相当于 sql and查询
db.shop.find({"name":"手机","price":3000})
{ _id: ObjectId("60c0258a64f1792e535a7a4a"),
name: '手机',
price: 3000 }
rs0 [direct: primary]
db.shop.find({$and:[{“name”:“手机”},{“price”:3000}]}) //多条件查询,相当于 sql and查询
db.shop.find({$and:[{"name":"手机"},{"price":3000}]})
{ _id: ObjectId("60c0258a64f1792e535a7a4a"),
name: '手机',
price: 3000 }
rs0 [direct: primary]
db.shop.find({$or:[{“name”:“手机”},{“price”:4000}]})//多条件or查询,相当于sql or
db.shop.find({$or:[{"name":"手机"},{"price":4000}]})
{ _id: ObjectId("60c024ed64f1792e535a7a49"),
name: '家电',
price: 4000 }
{ _id: ObjectId("60c0258a64f1792e535a7a4a"),
name: '手机',
price: 3000 }
rs0 [direct: primary]
db.shop.find({“name”:/手/}) //正则表达式查询,包含手的
db.shop.find({"name":/手/})
{ _id: ObjectId("60c0258a64f1792e535a7a4a"),
name: '手机',
price: 3000 }
rs0 [direct: primary]
db.shop.find({“name”:/^手/}) //正则表达式查询,包含手开头的
db.shop.find({"name":/^手/})
{ _id: ObjectId("60c0258a64f1792e535a7a4a"),
name: '手机',
price: 3000 }
rs0 [direct: primary]
db.shop.find({“name”:/手^/}) //正则表达式查询,包含手结尾的
db.shop.find({"name":/手^/})
rs0 [direct: primary]
db.shop.find({a:{$gt:5000}}) //查询a字段大于5000
db.shop.find({a:{$gt:5000}})
rs0 [direct: primary]
db.shop.find({name:{$ne:‘王五’}}) //查询姓名不等于王五的
db.shop.find({name:{$ne:'王五'}})
rs0 [direct: primary]
搜索子文档,实现关联查询示例:
投影(projection)查询如果要查询结果返回部分字段,则需要使用投影查询(不显示所有字段,只显示指定的字段)。 id字段必须明确指出不返回,否则每次默认返回,示例:db.shop.find({},{“name”:1}) //0显示1不显示
--通过"name":1指定name字段不显示
db.shop.find({},{"name":1})
db.shop.insert({name:"电脑",category:{name:"联想",cpu:"i7"}})
db.shop.find({"category.name":"联想"})
--搜索数组中的对象
--插入数据
db.shop.insert([{name:"联想",cpu:["i5","i7"]},{name:"戴尔",cpu:["i3","i7"]}])
db.shop.find({cpu:"i5"})
db.shop.find({$or:[{cpu:"i5"},{cpu:"i3"}]})
--插入数据
db.shop.insert({name:"手机",brand:[{name:"华为",price:4000},{name:"小米",price:3000},{name:"苹果",price:8000}]})
db.shop.find({"brand.name":"华为"})
7.删除数据
db.remove()
示例:
db.shop.remove({name:"手机"}) //删除name=手机的记录
db.shop.remove({price:{$lte:3000}}) //删除price<=3000的记录数
db.shop.remove({}) //删除所有记录
8.更新数据
db.update
语法格式:db…update(<查询条件>,<更新字段>),其中条件和字段均为JSON对象
示例:
--插入待加工数据
db.shop.insert([{name:"iphone12",price:8000},{name:"p40",price:5000},{name:"p30"}])
--修改
db.shop.updateOne({name:"iphone12"},{$set:{price:7500}})
db.shop.updateOne({name:"p30"},{$set:{price:3500}})
注意事项:db.update()同db.updateOne(),无论输入的条件匹配多少条记录,只更新第一条,使用db.updateMany(),输入条件匹配多少,就更新多少条update/updateOne/updateMany。
9.数组操作
p
u
s
h
增
加
一
个
对
象
到
数
组
底
部
,
push增加一个对象到数组底部,
push增加一个对象到数组底部,pushAll增加多个对象到数组底部
p
o
p
从
数
组
底
部
删
除
一
个
对
象
,
pop从数组底部删除一个对象,
pop从数组底部删除一个对象,pull如果匹配指定的值,从数组中删除相应的对象,
p
u
l
l
A
l
l
如
果
匹
配
任
意
的
值
,
从
数
据
中
删
除
相
应
的
对
象
,
pullAll如果匹配任意的值,从数据中删除相应的对象,
pullAll如果匹配任意的值,从数据中删除相应的对象,addToSet如果不存在则增加一个到数组$set修改对象属性值 。
例:
新增:
db.shop.insert({name:"xiaomi",color:[1,2]})
修改数组:
db.shop.updateOne({name:"xiaomi"},{$push:{color:3}})
弹出
db.shop.updateOne({name:"xiaomi"},{$pop: {color:1}})