说明
- collects:代指集合
- object:代指对象
- filterObj:代指过滤到需要的数据
- multi:属性名,表示是否多选
create新增
- db.collects.insert(obj); // 插入数据
- db.collects.insertOne(obj); // 插入一条数据
- db.collects.insertMany([obj,obj,obj]); // 插入多条数据
read查询
- db.collects.find(obj, filterObj);
- db.collects.findOne(obj); // 一般查询只有一条数据满足条件的情况
常用操作符
| 符号 | 对应转义符 |
|---|---|
| < | $lt |
| <= | $lte |
| 大于 | $gt |
| >= | $gte |
| !== | $ne |
| 逻辑或 | or) |
| 逻辑非 | $nin |
| 正则匹配 | /^f/ |
| 函数 | $where |
过滤对象中,值为1的指展示此列,值为0指隐藏此列。ID字段可以为1,可以为0,其他字段1和0不能混用。
查询结果只展示性别列,不展示ID列,如下:
db.collects.find({age:18}, {sex:1,_id:0});
查询年龄大于3岁的,如下:
db.collects.find({age:{$lt:3}});
查询年龄为3岁或5岁的,如下:
db.collects.find({age:{$in:[3,5]}});
或者这样:
db.collects.find({$or:[{age:3},{age:5}]});
查询所有名字以f开头的,如下:
db.collects.find({name: /^f/});
查询爱好是打球,且家在东北的,如下:
db.collects.find({$where:function(){
return hobby === 'play a ball' && home === '东北'
}});
update编辑
bad
- db.collects.update(查询条件object,更新的数据object); // 这种方式易造成数据库数据丢失
good
- db.collects.update(查询条件object,{$set:{更新的数据object},{multi:true}}); // 这种方式能正常查询,但是每次都需带上多个条件
better
- db.collects.updateOne(查询条件object,更新的数据object);
- db.collects.updateMany(查询条件object,更新的数据object);
delete删除
- db.collects.remove(obj);
删除积分在60以上的:
db.collects.remove({score:{$gt:60});