show dbs;
use jack_seller;
db.test.find().count();
db.test.insert([
{name:'zhang',age:12,sex:'w'},
{name:'wang',age:10,sex:'m'},
{name:'li',age:19,sex:'w'},
{name:'gao',age:8,sex:'w'},
{name:'hu',age:20,sex:'m'}
])
设置field值,1表示查询结果显示该field,0表示不显示
例如: 不显示 _id 就在末尾设置 {_id:0}
db.test.find({age:12},{_id:0})
db.test.find({age:12},{sex:0,_id:0})
$lt 小于
$lte 小于等于
$gt 大于
$gte 大于等于
$eq 等于
$ne 不等于
db.test.find({age:{$lt:12}})
$in 是否包含
$nin 是否不包含
db.test.find({age:{$in:[8]}})
db.test.find({age:{$in:[10,11,8]}})
$and 逻辑与
db.test.find({$and:[{age:12},{sex:"m"}]})
$or 逻辑或
db.test.find({$or:[{age:12},{sex:"m"}]})
$not 逻辑非 (不等于)
db.test.find({name:{$not:{$eq:'zhang'}}})
$nor 既不也不
db.test.find({$nor:[{name:'zhang'},{age:11}]},{_id:0})
条件混合查找
// name != 张 and ( age=12 or age= 13)
db.test.find({name:{$ne:'zhang'},$or:[{age:12},{age:13}]})
// age > 13 or (name = 'zhang' and sex = 'm') 不显示 _id
db.test.find({$or:[{age:{$gt:13}},{name:'zhang',sex:'m'}]},{_id:0})
db.test.insert([
{name:'zhang',age:12,sex:'m',hobby:['song','run'],score:[10,50,90]},
{name:'wang',age:10,sex:'m',hobby:['run'],score:[10,60,90]},
{name:'li',age:19,sex:'w',hobby:['song'],score:[10,150,90]},
{name:'gao',age:8,sex:'w',hobby:['song','run'],score:[10,50,70]},
{name:'hu',age:20,sex:'m',hobby:['song','run','comp'],score:[10,70,90]}
])
//查询 hobby 中包含 song 的 文档
db.test.find({hobby:'song'})
//查找集合中hobby数组里同时包含‘song’和‘run’的文档:
db.test.find({hobby:{$all:['song','run']}},{_id:0})
查找一个数组中是否包含一个区间
db.test.find({score:{$elemMatch:{$gt:80,$lte:91}}},{_id:0})
查找一个数组中包含值得个数
db.test.find({hobby:{$size:1}},{_id:0})
查找存在score字段的记录
db.test.find({score:{$exists:true}})
查找不存在score字段的记录
db.test.find({score:{$exists:false}})
查找age 被2除余数是1的记录
db.test.find({age:{$mod:[2,1]}},{_id:0})
查找某个域指定数据类型的记录
db.test.find({score:{$type:1}},{_id:0})
*在mongo中每种数据类型都匹配了一个整数值
Double 1 String 2 Object 3 Array 4 Binary data 5
Object id 7 Boolean 8 Date 9 Null 10 Regular expression 11
Symbol 14 JavaScript code 13 JavaScript code with scope 15
32-bit integer 16 Timestamp 17 64-bit integer 18
Min key 255 Max key 127
//获取 name 的所有参 去重
db.test.distinct('name')
将find结果格式化显示
db.test.find().pretty()
//分页
显示find结果的前num条记录
db.test.find().limit(2)
跳过前num条记录,显示2条结果
db.test.find().skip(2).limit(2)
统计匹配到的记录的条数
db.test.find().count()
sort({})
按照指定字段进行排序
{age : 1} 按照age进行升序排列
{age : -1} 按照age进行降序排列
当有多个排序项时为复合排序 find(条件,显示字段).sort(排序条件)
db.test.find({},{_id:0}).sort({age:-1})
db.test.find({},{_id:0}).sort({age:-1,name:1})
删除所有name为‘zhang’的文档
db.test.remove({name:'zhang'})
删除第一条age为10的文档
db.test.remove({age:10},1)
删除全部文档
db.test.remove({})
更新:
db.test.insert([
{name:'zhang',sex:'m',hobby:['song','run'],score:[10,50,90]},
{name:'wang',sex:'m',hobby:['run'],score:[10,60,90]},
{name:'li',sex:'w',hobby:['song'],score:[10,150,90]},
{name:'gao',sex:'w',hobby:['song','run'],score:[10,50,70]},
{name:'hu',sex:'m',hobby:['song','run','comp'],score:[10,70,90]}
])
db.test.find()
// db.test.update(设置条件,{$set:{修改值},不存在是否插入,是否修改全部})
将姓名为wangwu的文档age改为20,如果不存在age域则自动添加
db.test.update({name:'wang'},{$set:{age:20}})
//为所有文档条件 age:20
db.test.update({},{$set:{age:20}},false,true)
删除test集合中 name:'wang' 的第一条文档的age域(age后面0,1均会删除该域)
db.test.update({name:'wang'},{$unset:{age:1}})
$rename 修改域名
将文档中第一个ag域名字改为age
db.test.update({},{$rename:{'age':'ages'}},false,true)
将文档中所有域名字改为age
db.test.update({},{$rename:{'age':'ages'}})
修改所有name为gao的age为25 第一个 没有是否插入, 第二true
db.test.update({name:'gao'},{$set:{age:25}},false,true)
如果name为haoren的文档存在则修改其age为27,如果不存在则插入{name:'haoren',age:27}
db.test.update({name:'haoren'},{$set:{age:27}},true,false)
修改age为21,sex为‘w’
db.test.update({name:'wangwu'},{$set:{age:21,sex:'w'}},true,false)
$inc 将某个域的值增加几(如果为负数则为减少)
db.test.update({name:'wangwu'},{$inc:{age:-2}})
$mul 将第一条数据的age乘以2
db.test.update({},{$mul:{age:2}},false,true)
将集合中所有age大于25的值修改为25
db.test.update({},{$min:{age:25}},false,true)
将集合中所有age小于22的值修改为22
db.test.update({},{$max:{age:22}},false,true)
数组修改器 两个Boolean值得
db.test.update({},{$push:{course:'Python'}},是否插入,是否更新全部)
$push 向数组添加一个值
db.test.update({},{$push:{course:'Python'}})
$pushAll 向数组中添加多项
db.test.update({name:'huairen'},{$pushAll:{course:['python','mongodb']}})
$each 添加多项数据
db.test.update({name:'haoren'},{$push:{course:{$each:['python','java']}}})
$pull 从数组中删除一项
db.test.update({name:'haoren'},{$pull:{course:'java'}})
$pullAll 从数组中删除多项
db.test.update({name:'wangwu'},{$pullAll:{course:[123,'Python']}})
$pop 从数组两端弹出数据
删除数组中的最后一项(1)
db.test.update({name:'huairen'},{$pop:{course:1}})
删除数组中的第一项(-1)
db.test.update({name:'huairen'},{$pop:{course:-1}})
$addToSet 同 push 但是不能有重复
添加一项,但是如果原数组中已有此项则无法添加
db.test.update({},{$addToSet:{course:'html'}})
关于null
某一个键的值是null
查找publication域是null的文档
db.test.find({publication:null})
某一个文档不存在这个域
查找不存在publication_date域的文档
db.test.find({publication_date:null})
文档类型的数据
内部文档数据查找使用
* 按照键值进行匹配
db.test.find({book:{ "title" : "Python从入门到放弃", "price" : 88 }},{_id:0})
*使用外层键的名词引用内存文档键,查找对应的值
这时查找项必须加引号
db.test.find({'book.price':88},{_id:0})
db.test.update({book:{$exists:true}},{$set:{'book.price':60}})
练习:
文档机构同上次
创建一个数据库 名字为 grade
数据库中创建集合集合名称为 class
向集合中插入若干文档文档结构如下
{name:‘小红’,age:10,sex:‘w’,hobby:['a','b']}
1. 将该班中姓名为小红的学生年龄变为8岁,兴趣爱好变为跳舞画画
{$set:{age:8,hobby:['dance','drawing']}}
2. 追加 小明的兴趣爱好,增加唱歌
{$push:{hobby:'sing'}}
3.增加小王兴趣爱好,吹牛和打篮球
{$pushAll:{hobby:['chuiniu','basketball']}}
4.追加小李兴趣爱好,吹牛,唱歌,要保证和原有爱好不重复
{$addToSet:{hobby:{$each:['chuiniu','sing']}}}
5.给该班所有同学年级增加1岁
{$inc:{age:1},false,true}
6.删除小明同学的sex属性
{$unset:{sex:1}}
7.删除小明兴趣爱好中的第一项
{$pop:{hobby:-1}}
8.删除小红兴趣中的画画
{$pull:{hobby:'drawing'}}
MongoDB 增删改差
最新推荐文章于 2022-11-25 01:32:27 发布