MongoDB命令

稜镜派生
• 阅读 2231

我的博客

mongod参数说明

参数 说明
dbpath 数据文件存放路径,每个数据库会在其中创建一个子目录,用于防止同一个实例多次运行的 mongod.lock 也保存在此目录中。
logpath 错误日志文件
logappend 错误日志采用追加模式,默认是覆写模式。
bind_ip 对外服务的绑定ip,一般设置为空,及绑定在本机所有可用 ip 上,如有需要可以单独指定。
port 对外服务端口。Web 管理端口在这个 port 的基础上+1000。
fork 以后台 Daemon 形式运行服务
maxConns 最大连接数
directoryperdb 每个 db 存放在单独的目录中,建议设置该参数。与 MySQL 的独立表空间类似。
repairpath 执行 repair 时的临时目录。在如果没有开启 journal,异常 down 机后重启,必须执行 repair 操作。
syncdelay 系统同步刷新磁盘的时间,单位为秒,默认是 60 秒。

这么多参数,全面写在命令行中则容易杂乱而不好管理。因此,mongod 支持将参数写入到 一个配置文本文件中,然后通过 config 参数来引用此配置文件:

./mongod --config /etc/mongo.cnf

数据库常用命令

# 创建数据库, 如果有则进入, 如果没有则创建
use demo_database;

# 查看所有db
show dbs;

# 从指定主机上克隆数据库
db.cloneDatabase(“127.0.0.1”);

# 修复当前db
db.repairDatabase();

# 显示当前db的状态
db.stats();

# 查看当前db的链接机器地址
db.getMongo();

# 删除当前使用的db
db.dropDatabase();

# 查看当前db的版本
db.version();

# 关闭数据库连接
shutdownServer();

集合(Collection)常用命令

集合相对于关系型数据库中的表。

// 创建一个集合, 创建成功会显示{“ok”:1}
db.createCollection(“account”, {size: 20, capped: 5, max: 100});

// 判断集合是否为定容量
db.collName.isCapped();

// 查询集合
db.getCollection("account");

// 获取当前db下的所有集合
db.getCollectionNames();
// 或者
show collections();

// 显示当前db所有聚集索引的状态
db.printCollectionStats();

其中创建集合的语法为:

db.createCollection(name, options)

name为集合的名字,options为参数(可选),指定有关内存大小和索引选项,options有以下几个选项:

字段 类型 描述
capped Boolean (可选)如果为true,则启用封顶集合。封顶集合是固定大小的集合,会自动覆盖最早的条目,当它达到其最大大小。如果指定true,则需要也指定尺寸参数。
autoIndexID Boolean (可选)如果为true,自动创建索引_id字段的默认值是false。
size Number (可选)指定最大大小字节封顶集合。如果封顶如果是 true,那么你还需要指定这个字段。
max Number (可选)指定封顶集合允许在文件的最大数量。

用户相关的命令

# 添加用户
db.addUser("userName");
db.addUser("userName", "pwd123", true); // 用户名、密码、是否只读

# 数据库认证、安全模式
db.auth("userName", "123123");

# 查看所有的用户
show users;

# 删除用户
db.removeUser("userName");

添加、删除、修改相关

# 添加数据
db.account.save({'name': 'xigua', age: '23', 'location': 'China SH'});

# 修改数据
ab.account.update({'name': 'xigua'}, {$set: {'age': 24}}); // 相当于update account set age=24 where name=xigua

# 删除数据
db.account.remove({'name': 22});

查询相关

# 我们先插入一些数据以供查询
for (var i=1; i<100; i++) db.account.insert({'name': i, 'age': i});

# 查询所有记录,默认每页显示20条记录
db.account.find(); // account为集合名,相比于关系型数据库来说,相当于select * from account

# 设置查询时每页显示的记录数
DBQuery.shellBatchSize= 50; // 输入it 显示更多

# 过滤name字段相同的数据
db.account.distinct("name"); // 相比于关系型数据库来说,相当于select distinct name form account

# 查询name=88的记录
db.account.find({'name': 88}); // 相当于select * from account where name = 88

# 查询name>88的记录
db.account.find({'name': {$gt: 22}}); // 相当于select * from account where name > 88

# 查询name<88的记录
db.account.find({'name': {$lt: 22}}); // 相当于select * from account where name < 88

# 大于 $gt
# 小于 $lt
# 大于等于 $gte
# 小于等于 $lte

# 查询name中包含数字9的数据
db.account.find({'name': /9/});

# 查询指定列的数据
db.account.find({}, {name: 1, age: 1}); // 相当于select name, age from account 

# 按照name升序排序
db.account.find().sort({name: 1});

# 按照name降序排序
db.account.find().sort({name: -1});

# 查询name = 1, age = 1的数据
db.account.find({name: 1, age: 1}); // 相当于select * from account where name=1 and age=1;

# 查询前五条数据
db.account.find().limit(5); // 相当于select top 5 * from account

# 查询20条以后的数据
db.account.find().skip(10);

# or
db.account.find({$or: [{age: 10}, {age: 20}]}); // 相当于select * from account where age=10 or age=20;

# 查询第一条数据
db.account.findOne();

# 查询某个结果集的记录条数
db.account.find().count(); // 相当于select count(*) from account

# 查询所有结果中不包含name的记录
db.account.find({name: {$exists: false}});

# 查询所有结果中对2取模为0的数据
db.account.find({num: {$mode: [2, 0]}});

# 查询结果中num值不等于3的数据
db.account.find({num: {$ne: 3}})

# 包含$in
db.table.find({num: {$in: [1, 3, 5]}})

# 不包含$nin
db.table.find({num: {$nin: [1, 3, 5]}})

# $size 数组元素个数
# 对于{name: 'David', age: 26, favorite_number: [ 6, 7, 9 ] }记录 匹配 db.users.find({favorite_number: {$size: 3}});
# 不匹配 db.users.find({favorite_number: {$size: 2}});

# 正则匹配
db.account.find({name: {$not: /^T.*/}});

# 查看记录数
db.table.find().count();

# 从第 3 条记录开始,返回 5 条记录(limit 3, 5)
db.users.find().skip(3).limit(5);

简单的语句块操作

# 打印
print('Hello MongoDB!');

# 将一个对象转换成json
tojson(new Object());
tojson(new Object('a'));

# 循环添加数据
for (var i=1; i<100; i++) {
    db.account.insert({'name': i, 'age': i});
}

# forEach迭代循环
db.users.find().forEach(printjson);

其他

# 查询之前的错误信息
db.getPrevError();

# 清楚错误信息
db.resetError();
点赞
收藏
评论区
推荐文章
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Easter79 Easter79
3年前
sysmain服务怎么启动 & Win7 SuperFetch无法启动
在控制面板(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.baidu.com%2Fs%3Fwd%3D%25E6%258E%25A7%25E5%2588%25B6%25E9%259D%25A2%25E6%259D%25BF%26tn%3DSE_PcZhidaonwhc_ngpag
Wesley13 Wesley13
3年前
MongoDB数据更新命令、操作符
一、Mongodb数据更新命令Mongodb更新有两个命令:update、save。1.1update命令update命令格式:db.collection.update(criteria,objNew,upsert,multi)参数说明:criteria:查询条件objNew:update对象和一些更新操作符u
Stella981 Stella981
3年前
MongoDB Sharding分片配置
Ps:mongod是mongodb实例,mongos被默认为为mongodbsharding的路由实例。本文使用的mongodb版本为3.2.9,因此参考网址为:https://docs.mongodb.com/v3.2/sharding/(https://www.oschina.net/action/GoToLink?urlhttps%3A%2
Wesley13 Wesley13
3年前
MongoDB 入门命令
MongoDB环境Ubuntu安装MongoDBsudoaptgetupdatesudoaptgetinstallmongodb启动服务mongod
Wesley13 Wesley13
3年前
MongoDB DBA 实践8
在Linux系统中,主要是使用命令行进行mongodb的分片集群部署一、先决条件  mongodb安装成功,明确路径,MongoDB的几个路径:1./var/lib/mongodb2./var/log/mongodb3./etc/mongod.conf4.usr/bin/二、分片部署   
Stella981 Stella981
3年前
90% 的 Java 程序员都说不上来的为何 Java 代码越执行越快(1)
麻烦大家帮我投一票(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Frank.juejin.cn%2F%3Fu%3D%25E5%25B9%25B2%25E8%25B4%25A7%25E6%25BB%25A1%25E6%25BB%25A1%25E5%25BC%25A0%25E5%259
Wesley13 Wesley13
3年前
IE浏览器中如何安全地调用本地可执行程序
通常,浏览器中是禁止运行本地可执行程序(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.baidu.com%2Fs%3Fwd%3D%25E6%2589%25A7%25E8%25A1%258C%25E7%25A8%258B%25E5%25BA%258F%26tn%3D4403918
Stella981 Stella981
3年前
Linux系统在信息社会的发展
随着信息技术(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.baidu.com%2Fs%3Fwd%3D%25E4%25BF%25A1%25E6%2581%25AF%25E6%258A%2580%25E6%259C%25AF%26tn%3DSE_PcZhidaonwhc_ngpa
Stella981 Stella981
3年前
Linux中JDK的安装和配置方法
一、软件(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.so.com%2Fs%3Fq%3D%25E8%25BD%25AF%25E4%25BB%25B6%26ie%3Dutf8%26src%3Dinternal_wenda_recommend_textn)下载1、下载JDK