本篇文章介绍学习MongoDB的一些常用命令,希望能帮助大家.
常用操作
Help查看命令提示db.help();db.yourColl.help();db.youColl.find().help();
- 切换/创建数据库
use yourDB; 当创建一个集合(table)的时候会自动创建当前数据库
- 查询所有数据库
show dbs;
- 删除当前使用数据库
db.dropDatabase();
- 从指定主机上克隆数据库
- 从指定主机上克隆数据库
- 从指定的机器上复制指定数据库数据到某个数据库
db.copyDatabase("mydb", "temp", "127.0.0.1");将本机的mydb的数据复制到temp数据库中
- 修复当前数据库
db.repairDatabase();
- 查看当前使用的数据库
db.getName();
- 显示当前db状态
db.stats();
- 当前db版本
db.version();
- 查看当前db的链接机器地址
db.getMongo();
Collection聚集集合操作
- 创建一个聚集集合(
table)db.createCollection(“collName”, {size: 20, capped: 5, max: 100});
- 得到指定名称的聚集集合(
table)db.getCollection("account");
- 得到当前db的所有聚集集合
db.getCollectionNames();
- 显示当前db所有聚集索引的状态
db.printCollectionStats();
用户相关操作
- 添加一个用户
db.addUser("name");db.addUser("userName", "pwd123", true); 添加用户、设置密码、是否只读
- 数据库认证、安全模式
db.auth("userName", "123123");
- 显示当前所有用户
show users;
- 删除用户
db.removeUser("userName");
聚集集合查询
- 查询所有记录
db.userInfo.find(); 相当于:select* from userInfo;默认每页显示20条记录,当显示不下的情况下,可以用it迭代命令查询下一页数据。注意:键入it命令不能带“;”但是你可以设置每页显示数据的大小,用DBQuery.shellBatchSize= 50;这样每页就显示50条记录了。
- 查询去掉后的当前聚集集合中的某列的重复数据
db.userInfo.distinct("name");会过滤掉name中的相同数据,相当于:select distict name from userInfo;
- 查询
age = 22的记录db.userInfo.find({"age": 22}); 相当于:select * from userInfo where age = 22;
- 查询
age > 22的记录db.userInfo.find({age: {$gt: 22}});
- 查询
age < 22的记录db.userInfo.find({age: {$lt: 22}});
- 查询
age >= 25的记录db.userInfo.find({age: {$gte: 25}});
- 查询
age >= 23并且age <= 26db.userInfo.find({age: {$gte: 23, $lte: 26}});
- 查询
name中包含mongo的数据db.userInfo.find({name: /mongo/});
- 查询
name中以mongo开头的db.userInfo.find({name: /^mongo/});
- 查询指定列
name、age数据db.userInfo.find({}, {name: 1, age: 1});当然name也可以用true或false,当用ture的情况下河name:1效果一样,如果用false就是排除name,显示name以外的列信息。
- 查询指定列
name、age数据,age > 25.db.userInfo.find({age: {$gt: 25}}, {name: 1, age: 1});
- 按照年龄排序
- 升序:
db.userInfo.find().sort({age: 1}); - 降序:
db.userInfo.find().sort({age: -1});
- 升序:
- 查询
name = zhangsan, age = 22的数据db.userInfo.find({name: 'zhangsan', age: 22});
- 查询前5条数据
db.userInfo.find().limit(5);
- 查询10条以后的数据
db.userInfo.find().skip(10);
- 查询在5-10之间的数据
db.userInfo.find().limit(10).skip(5);可用于分页,limit是pageSize,skip是第几页*pageSize
- or与 查询
db.userInfo.find({$or: [{age: 22}, {age: 25}]});
- 查询第一条数据
db.userInfo.findOne();db.userInfo.find().limit(1);
- 查询某个结果集的记录条数
db.userInfo.find({age: {$gte: 25}}).count();如果要返回限制之后的记录数量,要使用count(true)或者count(非0)db.users.find().skip(10).limit(5).count(true);
- 按照某列进行排序
db.userInfo.find({sex: {$exists: true}}).count();
索引
- 创建索引
db.userInfo.ensureIndex({name: 1});db.userInfo.ensureIndex({name: 1, ts: -1});
- 查询当前聚集集合所有索引
db.userInfo.getIndexes();
- 查看总索引记录大小
db.userInfo.totalIndexSize();
- 读取当前集合的所有index信息
db.users.reIndex();
- 删除指定索引
db.users.dropIndex("name_1");
- 删除所有索引
db.users.dropIndexes();