首先我已经默认完成了前面的必要步骤,创建了数据库,并且已经创建了新的集合,接下来我就暂且以goods来命名集合,且我以存入用户简单信息为例.
增:
db.goods.insert({userId:1,userName:"张三",passWord:"123",age:22,}),
db.goods.insertOne({userId:2,userName:"张三",passWord:"123",age:22,});
insert 和 insertOne = 每次都是只能插入一条数据,只可以插入单条,需要以对象的形式
db.goods.insert([
{userId:1,userName:"张三",passWord:"123",age:22},
{userId:2,userName:"张三",passWord:"123",age:22},
])
db.goods.insertMany([
{userId:1,userName:"张三",passWord:"123",age:22},
{userId:2,userName:"张三",passWord:"123",age:22},
])
insert([ {},{}..]) 和 insertMany([{,{}...}]) = 每次可以插入多条数据,需要以数组的形式进行存储
删(慎用):
(只要在数据库的操作中涉及到删除的都要小心,谨慎)
db.goods.deleteOne({userId:2})
删除userId:2的用户信息数据.deleteOne = 每次只能删除一条数据
db.goods.deleteMany({userId:1},{userId:2}....)
删除userId:1 和 userId:2的用户信息数据.deleteMany = 每次可以删除多条数据
db.goods.deleteMany({})
不写条件.删除集合中的所有数据
改:
db.goods.updateOne({userId:1},{$set:{userName:"李四",passWord:456}})
db.goods.updateMany{{userId:2},{$set:{userName:"王五",passWord:"789"}}}
updateOne每次只能修改单条数据,同样的条件下,有多条数据存在,使用updateOne只能修改一条; updateMany每次可以修改多条数据
db.goods.updateOne({userId:1},{$inc:{age:num})
db.goods.updateMany({userId:1},{$inc:{age:-num})
num=自增, -num=自减
查:
db.goods.find()
查询所有数据
db.goods.find({userName:"张三"})
查询指定键值对数据
db.goods.find().pretty()
格式化查询所有数据
db.goods.find({age:22},{userName:1})
指定条件查询: 返回年龄为22的用户名,1表示只返回指定键,这种模式为 inclusion,
db.goods.find({age:22},{userName:0})
指定条件查询: 返回年龄为22的除了用户名之外的所有数据,0表示不需要返回的指定键 ,这种模式为exclusion. 这两种模式之间不能混用,除了不希望返回数据库自带的id或者版本号,其他键不可以即使用inclusion,又使用exclusion,
比如 db.goods.find({age:22},{userName:0,age:1}) 这样是不行的
db.goods.find({age:22}).limit(5).skip(num)
分页查询: limit = 每页显示多少条数据,skip = 每页从第几条开始显示,默认从第0个索引开始
skip可以通过设定一个变量,进行每页显示条数的更新,比如:num*=index;
db.goods.find({userName:"张三"}).sort({age:1})
排序查询: 查询userName条件的数据,再把数据通过age进行排序, 1 = 升序 -1 = 降序
db.goods.find({userName:"张三"},{$lt:num1,$gt:num2})
db.goods.find({userName:"张三"},{$lte:num1,$gte:num2})
区间查询: 先通过userName查询一个用户名都为""张三""的类, 然后 $lt 是大于 , $gt 是小于 ---- $lte 是大于等于 , $gte 是小于等于
db.goods.find({userName:/张/}) 或者 db.goods.find({userName:/^张/})
模糊查询: 通过正则进行匹配,第一个是匹配用户名带有指定的字段,第二个匹配用户名以指定字段开头
db.goods.find( $or: [{userName:"张三"} || {phoneNumber:123123}])
或查询: 多用于登录验证手机号或者用户名, $or是关键字, 手机号或者用户名正确都可以登录
db.goods.find({userName:"张三",phoneNumber:123123})
且查询: 相比于 "或" 查询就简单一些.通过一个花括号进行 "且"判断 , 用户名和电话号码要都正确
db.goods.find("userName")