1.mongodb插入数据
db.集合名.insert(document)
db.stu.insert({“name”:“小明”,“age”:18})
db.stu.insert({_id:“20180101”,“name”:“小明”,age:18})
插入文档时,如果不指定_id参数,MongoDB会为文档自动指定一个唯一的Objectid
2.mongodb的保存
命令:db.集合名.save(document)
db.stu.save({_id:20170101,name:“小红”,age:21})
db.stu.save({name:“小华”,age:22})
如果文档的_id已经存在则修改,如果不存在则添加
3. mongodb的查询
命令:db.集合名.find()
3.1 简单查询
- 方法find():查询
db.集合名.find() - 方法findOne():查询,只返回第一个
db.集合名.findOne(条件文档) - 方法pretty():将结果格式化;不能和findOne()一起用
db.集合名.find(条件文档).pretty()
3.2 比较运算符
- 小于:$lt
- 小于等于:$lte
- 大于:$gt
- 大于等于:$gte
- 不等于:$ne
查询年龄大于等于18的人
db.stu.find({age:{$gte:18}})
3.3 逻辑运算符
- and:
查询年龄大于等于18,性别为true的人
db.stu.find({age:{$gte:18},sex:true})
db.stu.find({$and:[{age:{$gte:18}},{sex:true}]})
- or
查询年龄大于等于18,或性别为false的人
db.stu.find({$or:[{age:{$gte:18}},{sex:fasle}}]})
3.4 范围运算符
使用$in或者$nin
db.stu.find({age:{$in:[18,45]}})
3.5 正则表达式
db.stu.find({name:{$regex:“公”}})
3.6 自定义查询
db.stu.find({
$where:function(){
return this.age>20
}
})
3.7 skip和limit
- 方法limit():用于读取指定数量的文档
db.集合名.find().limit(数量)
查询两条学生信息
db.stu.find().limit(2)
- 方法skip():用于跳过指定数量的文档
db.集合名.find().skip(数量)
db.stu.find().skip(2)
skip和limit组合可以实现翻页
3.8 投影
在查询到的返回结果中,只选择必要的字段
命令:db.集合名.find({},{字段名称:1,…})
参数为字段与值,值为1表示显示,为0表示不显示,特别注意:
- 对于_id列默认是显示的,如果不显示需要明确设置为0
- 对于其他不显示的字段不能设置为0
3.9 排序
方法sort(),用于对查询结果按照指定的字段进行排序
命令:db.集合名.find().sort({字段:值})
值为1为升序,值为-1为降序
先按年龄升序,再按性别降序
3.10 统计个数
方法count()用于统计结果集中文档条数
命令:db.集合名.find({条件}).count()
命令:db.集合名.count({条件})
4. mongodb的更新
db.集合名.update({query},{update},{multi:boolean,upsert:boolean})
- query:查询条件
- update:更新操作符
- multi:可选操作,默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
- multi参数必须和$set参数一起使用
- upsert:可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
指定键值更新
5. mongodb的删除
db.集合名.remove({query},{justone:boolean})
- query:可选,删除的文档的条件
- 参数justone:(可选)如果设为 true 或 1,则只删除一个文档,如果不设置该参数,或使用默认值 false,则删除所有匹配条件的文档。