/* Collection集合操作 */
(1)创建一个集合
db.createCollection("collName", {size: 20, capped: true, max: 100});
db.collName.isCapped(); //判断集合是否为定容量
(2)得到指定名称的集合
db.getCollection("account");
(3)得到当前db的所有集合
db.getCollectionNames();
(4)显示当前db所有集合的状态:db.printCollectionStats();
db.getCollectionNames();
/* 集合数据的添加、修改、删除、查询 */
(1)添加
db.users.save({name: "zhangsan", age: 25, flag: true})
db.study.insert({name:"laoli",age:12}) //在当前数据库中的study集合中插入一个文档
(2)修改
//将age = 25的文档记录的name改为changeName
db.users.update({age: 25}, {$set: {name: 'changeName'}}, false, true)
//第1个true/false可选,表示如果不存在update的记录,是否插入objNew:true为插入,默认是false不插入。
//第2个true/false可选,默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新
//姓名为贺九的年龄修改为1000,默认只改一条
db.store.update({name:"贺九"},{$set:{age:1000}})
//将性别为女的年龄修改为16,加{multi:true}可修改多条
db.store.update({sex:"女"},{$set:{age:16}},{multi:true})
db.store.update({name:"王新元"},{age:81}) //不加$set是完整替换
db.store.update({name:"马萌萌"},{$inc:{age:-1}}) //将姓名为马萌萌的年龄减1
//name = 'Lisi'的文档年龄增加50
db.users.update({name: 'Lisi'}, {$inc: {age: 50}}, false, true)
// name = 'Lisi'的文档年龄增加50,name 改为 'hoho'
db.users.update({name: 'Lisi'}, {$inc: {age: 50}, $set: {name: 'hoho'}}, false, true)
(3)删除
//删除所有年龄为32的文档项
db.users.remove({age:32})
//删除一条记录,性别为男
db.users.remove({sex:"男"},{justOne:true})
//删除所有记录
db.users.remove({})
(4)查询
-----查询所有记录
db.userInfo.find() || show collections //相当于:select* from userInfo;
-----精确查找
db.userInfo.find({age: 22}) //查询age = 22的记录
db.userInfo.find({"score.math": 98}) //查询其中某个对象下的数据,必须带引号
-----多条件查找
db.userInfo.find({age: {$gte: 23, $lte: 26}}) //查询age >= 23 并且 age <= 26
db.userInfo.find({name: 'zhangsan', age: 22})
//查询指定列name、age数据,age > 25
db.userInfo.find({age: {$gt: 25}}, {name: 1, age: 1})
-----模糊查找
db.userInfo.find({name: /mongo/}) //查询name中包含 mongo的数据
db.userInfo.find({name: /^mongo/}) //查询name中以mongo开头的
-----比较查找
db.userInfo.find({age: {$gt: 22}}) //查询age > 22的记录
db.userInfo.find({age: {$lt: 22}}) //查询age < 22的记录
db.userInfo.find({age: {$gte: 25}}) //查询age >= 25的记录
db.userInfo.find({age: {$lte: 25}}) //查询age <= 25的记录
db.userInfo.find({$or: [{age: 22},{age: 25}]}) //查询age为22或25的文档
-----排序查询:
db.userInfo.find().sort({age: 1}) //升序(sort会自己提升到数据筛选的前面)
db.userInfo.find().sort({age: -1}) //降序
//当年龄相同时,才会采用语文成绩的倒序
db.store.find().sort({age:1,"score.yuwen":-1})
db.userInfo.find().limit(5) //查询前5条数据
//括号内数字为0,显示全部;超过总条数,也是显示全部
db.userInfo.find().skip(10) //查询10条以后的数据
db.userInfo.findOne() //查询第一条数据
//查询在5-15之间的数据,这两个顺序无先后,执行结果一样
db.userInfo.find().limit(10).skip(5)
db.store.find({sex:"男"}).sort({age:1}).limit(3).skip(9) //sort、skip、limit可以结合使用
----------其他
db.userInfo.distinct("name") //查询去重后数据
db.userInfo.find({age: {$gte: 25}}).count() //查询某个结果集的记录条数,写size()也可
db.advList.count({downNum:100}) //效率比用find找出来再计算长度高
//查找advList集合当中downNum值为100的文档条数,返回的是一个数字
//查询指定列name、age数据,0代表不显示,1代表显示
db.userInfo.find({}, {name: 1, age: 1});