成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作。

输入help可以">
首页 数据库 mysql教程 MongoDB基本使用

MongoDB基本使用

Jun 07, 2016 pm 04:30 PM
mongodb 使用 启动 基本 成功 打开

成功启动MongoDB后,再打开一个命令行窗口输入 mongo ,就可以进行数据库的一些操作。 输入help可以看到基本操作命令: show dbs:显示数据库列表 show collections:显示当前数据库中的集合(类似关系数据库中的表) show users:显示用户 use db name:切换

MongoDB基本使用

成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作。

输入help可以看到基本操作命令:

show dbs:显示数据库列表
show collections:显示当前数据库中的集合(类似关系数据库中的表)
show users:显示用户

use :切换当前数据库,这和MS-SQL里面的意思一样
db.help():显示数据库操作命令,里面有很多的命令
db.foo.help():显示集合操作命令,同样有很多的命令,foo指的是当前数据库下,一个叫foo的集合,并非真正意义上的命令
db.foo.find():对于当前数据库中的foo集合进行数据查找(由于没有条件,会列出所有数据)
db.foo.find( { a : 1 } ):对于当前数据库中的foo集合进行查找,条件是数据中有一个属性叫a,且a的值为1

MongoDB没有创建数据库的命令,但有类似的命令。

如:如果你想创建一个“myTest”的数据库,先运行use myTest命令,之后就做一些操作(如:db.createCollection('user')),这样就可以创建一个名叫“myTest”的数据库。

数据库常用命令

1、Help查看命令提示

help

 db.help();

 db.yourColl.help();

 db.youColl.find().help();

 rs.help();

2、切换/创建数据库

use yourDB;  当创建一个集合(table)的时候会自动创建当前数据库

3、查询所有数据库

show dbs;

4、删除当前使用数据库

db.dropDatabase();

5、从指定主机上克隆数据库

db.cloneDatabase(“127.0.0.1”); 将指定机器上的数据库的数据克隆到当前数据库

6、从指定的机器上复制指定数据库数据到某个数据库

db.copyDatabase("mydb", "temp", "127.0.0.1");将本机的mydb的数据复制到temp数据库中

7、修复当前数据库

db.repairDatabase();

8、查看当前使用的数据库

db.getName();

db; db和getName方法是一样的效果,都可以查询当前使用的数据库

9、显示当前db状态

db.stats();

10、当前db版本

db.version();

11、查看当前db的链接机器地址

db.getMongo();

Collection聚集集合

1、创建一个聚集集合(table

db.createCollection(“collName”, {size: 20, capped: 5, max: 100});

2、得到指定名称的聚集集合(table

db.getCollection("account");

3、得到当前db的所有聚集集合

db.getCollectionNames();

4、显示当前db所有聚集索引的状态

db.printCollectionStats();

用户相关

1、添加一个用户

db.addUser("name");

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

2、数据库认证、安全模式

db.auth("userName", "123123");

3显示当前所有用户

show users;

4、删除用户

db.removeUser("userName");

其他

1、查询之前的错误信息

db.getPrevError();

2、清除错误记录

db.resetError();

查看聚集集合基本信息

1、查看帮助 ?db.yourColl.help();
登录后复制
2、查询当前集合的数据条数 ?db.yourColl.count();
登录后复制
3、查看数据空间大小 db.userInfo.dataSize();
登录后复制
4、得到当前聚集集合所在的db db.userInfo.getDB();
登录后复制
5、得到当前聚集的状态 db.userInfo.stats();
登录后复制
6、得到聚集集合总大小 db.userInfo.totalSize();
登录后复制
7、聚集集合储存空间大小 db.userInfo.storageSize();
登录后复制
8、Shard版本信息 ?db.userInfo.getShardVersion()
登录后复制
9、聚集集合重命名 db.userInfo.renameCollection("users"); 将userInfo重命名为users
登录后复制
10、删除当前聚集集合 db.userInfo.drop();
登录后复制

聚集集合查询

1、查询所有记录
登录后复制
db.userInfo.find();
登录后复制
相当于:select* from userInfo;
登录后复制
默认每页显示20条记录,当显示不下的情况下,可以用it迭代命令查询下一页数据。注意:键入it命令不能带“;”
登录后复制
但是你可以设置每页显示数据的大小,用DBQuery.shellBatchSize= 50;这样每页就显示50条记录了。
登录后复制
2、查询去掉后的当前聚集集合中的某列的重复数据
登录后复制
db.userInfo.distinct("name");
登录后复制
会过滤掉name中的相同数据
登录后复制
相当于:select distict name from userInfo;
登录后复制
3、查询age = 22的记录
登录后复制
db.userInfo.find({"age": 22});
登录后复制
相当于: select * from userInfo where age = 22;
登录后复制
4、查询age > 22的记录
登录后复制
db.userInfo.find({age: {$gt: 22}});
登录后复制
相当于:select * from userInfo where age >22;
登录后复制
5、查询age <pre class="brush:php;toolbar:false">db.userInfo.find({age: {$lt: 22}});
登录后复制
相当于:select * from userInfo where age <pre class="brush:php;toolbar:false">6、查询age >= 25的记录
登录后复制
db.userInfo.find({age: {$gte: 25}});
登录后复制
相当于:select * from userInfo where age >= 25;
登录后复制
7、查询age <pre class="brush:php;toolbar:false">db.userInfo.find({age: {$lte: 25}});
登录后复制
8、查询age >= 23 并且 age <pre class="brush:php;toolbar:false">db.userInfo.find({age: {$gte: 23, $lte: 26}});
登录后复制
9、查询name中包含 mongo的数据
登录后复制
db.userInfo.find({name: /mongo/});
登录后复制
//相当于%%
登录后复制
select * from userInfo where name like ‘%mongo%’;
登录后复制
10、查询name中以mongo开头的
登录后复制
db.userInfo.find({name: /^mongo/});
登录后复制
select * from userInfo where name like ‘mongo%’;
登录后复制
11、查询指定列name、age数据
登录后复制
db.userInfo.find({}, {name: 1, age: 1});
登录后复制
相当于:select name, age from userInfo;
登录后复制
当然name也可以用true或false,当用ture的情况下河name:1效果一样,如果用false就是排除name,显示name以外的列信息。
登录后复制
12、查询指定列name、age数据, age > 25
登录后复制
db.userInfo.find({age: {$gt: 25}}, {name: 1, age: 1});
登录后复制
相当于:select name, age from userInfo where age >25;
登录后复制
13、按照年龄排序
登录后复制
升序:db.userInfo.find().sort({age: 1});
登录后复制
降序:db.userInfo.find().sort({age: -1});
登录后复制
14、查询name = zhangsan, age = 22的数据
登录后复制
db.userInfo.find({name: 'zhangsan', age: 22});
登录后复制
相当于:select * from userInfo where name = ‘zhangsan’ and age = ‘22’;
登录后复制
15、查询前5条数据
登录后复制
db.userInfo.find().limit(5);
登录后复制
相当于:selecttop 5 * from userInfo;
登录后复制
16、查询10条以后的数据
登录后复制
db.userInfo.find().skip(10);
登录后复制
相当于:select * from userInfo where id not in (
登录后复制
selecttop 10 * from userInfo
登录后复制
);
登录后复制
17、查询在5-10之间的数据
登录后复制
db.userInfo.find().limit(10).skip(5);
登录后复制
可用于分页,limit是pageSize,skip是第几页*pageSize
登录后复制
18、or与 查询
登录后复制
db.userInfo.find({$or: [{age: 22}, {age: 25}]});
登录后复制
相当于:select * from userInfo where age = 22 or age = 25;
登录后复制
19、查询第一条数据
登录后复制
db.userInfo.findOne();
登录后复制
相当于:selecttop 1 * from userInfo;
登录后复制
db.userInfo.find().limit(1);
登录后复制
20、查询某个结果集的记录条数
登录后复制
db.userInfo.find({age: {$gte: 25}}).count();
登录后复制
相当于:select count(*) from userInfo where age >= 20;
登录后复制
21、按照某列进行排序
登录后复制
db.userInfo.find({sex: {$exists: true}}).count();
登录后复制
相当于:select count(sex) from userInfo;
登录后复制
索引
1、创建索引
登录后复制
db.userInfo.ensureIndex({name: 1});
登录后复制
db.userInfo.ensureIndex({name: 1, ts: -1});
登录后复制
2、查询当前聚集集合所有索引
登录后复制
db.userInfo.getIndexes();
登录后复制
3、查看总索引记录大小
登录后复制
db.userInfo.totalIndexSize();
登录后复制
4、读取当前集合的所有index信息
登录后复制
db.users.reIndex();
登录后复制
5、删除指定索引
登录后复制
db.users.dropIndex("name_1");
登录后复制
6、删除所有索引索引
登录后复制
db.users.dropIndexes();
登录后复制

修改、添加、删除集合数据

1、添加
登录后复制
db.users.save({name: ‘zhangsan’, age: 25, sex: true});
登录后复制
添加的数据的数据列,没有固定,根据添加的数据为准
登录后复制
2、修改
登录后复制
db.users.update({age: 25}, {$set: {name: 'changeName'}}, false, true);
登录后复制
相当于:update users set name = ‘changeName’ where age = 25;
登录后复制
db.users.update({name: 'Lisi'}, {$inc: {age: 50}}, false, true);
登录后复制
相当于:update users set age = age + 50 where name = ‘Lisi’;
登录后复制
db.users.update({name: 'Lisi'}, {$inc: {age: 50}, $set: {name: 'hoho'}}, false, true);
登录后复制
相当于:update users set age = age + 50, name = ‘hoho’ where name = ‘Lisi’;
登录后复制
3、删除
登录后复制
db.users.remove({age: 132});
登录后复制
4、查询修改删除
登录后复制
db.users.findAndModify({
登录后复制
    query: {age: {$gte: 25}}, 
登录后复制
登录后复制
    sort: {age: -1}, 
登录后复制
登录后复制
    update: {$set: {name: 'a2'}, $inc: {age: 2}},
登录后复制
登录后复制
    remove: true
登录后复制
登录后复制
});
登录后复制
登录后复制
db.runCommand({ findandmodify : "users", 
登录后复制
    query: {age: {$gte: 25}}, 
登录后复制
登录后复制
    sort: {age: -1}, 
登录后复制
登录后复制
    update: {$set: {name: 'a2'}, $inc: {age: 2}},
登录后复制
登录后复制
    remove: true
登录后复制
登录后复制
});
登录后复制
登录后复制
update 或 remove 其中一个是必须的参数; 其他参数可选。
登录后复制
参数详解默认值query查询过滤条件{} sort如果多个文档符合查询过滤条件,将以该参数指定的排列方式选择出排在首位的对象,该对象将被操作{} remove若为true,被选中对象将在返回前被删除N/A update一个 修改器对象N/A new若为true,将返回修改后的对象而不是原始对象。在删除操作中,该参数被忽略。false fields参见Retrieving a Subset of Fields (1.5.0+) All fields upsert创建新对象若查询结果为空。 示例 (1.5.4+) false 
登录后复制
语句块操作
1、简单Hello World
登录后复制
print("Hello World!");
登录后复制
这种写法调用了print函数,和直接写入"Hello World!"的效果是一样的;
登录后复制
2、将一个对象转换成json
登录后复制
tojson(new Object());
登录后复制
tojson(new Object('a'));
登录后复制
3、循环添加数据
登录后复制
> for (vari= 0;i<pre class="brush:php;toolbar:false">... db.users.save({name: "u_" + i, age: 22 + i, sex: i % 2});
登录后复制
... };
登录后复制
这样就循环添加了30条数据,同样也可以省略括号的写法
登录后复制
> for (vari= 0;i<pre class="brush:php;toolbar:false">也是可以的,当你用db.users.find()查询的时候,显示多条数据而无法一页显示的情况下,可以用it查看下一页的信息;
登录后复制
4、find 游标查询
登录后复制
>varcursor = db.users.find();
登录后复制
> while (cursor.hasNext()) { 
登录后复制
    printjson(cursor.next()); 
登录后复制
}
登录后复制
这样就查询所有的users信息,同样可以这样写
登录后复制
登录后复制
登录后复制
while (cursor.hasNext()) { printjson(cursor.next); }
登录后复制
同样可以省略{}号
登录后复制
5、forEach迭代循环
登录后复制
db.users.find().forEach(printjson);
登录后复制
forEach中必须传递一个函数来处理每条迭代的数据信息
登录后复制
6、将find游标当数组处理
登录后复制
登录后复制
登录后复制
cursor[4];
登录后复制
取得下标索引为4的那条数据
登录后复制
既然可以当做数组处理,那么就可以获得它的长度:cursor.length();或者cursor.count();
登录后复制
那样我们也可以用循环显示数据
登录后复制
for (vari = 0, len = c.length(); i<len printjson><pre class="brush:php;toolbar:false">7、将find游标转换成数组
登录后复制
>var arr = db.users.find().toArray();
登录后复制
> printjson(arr[2]);
登录后复制
用toArray方法将其转换为数组
登录后复制
8、定制我们自己的查询结果
登录后复制
只显示age <pre class="brush:php;toolbar:false">db.users.find({age: {$lte: 28}}, {age: 1}).forEach(printjson);
登录后复制
db.users.find({age: {$lte: 28}}, {age: true}).forEach(printjson);
登录后复制
排除age的列
登录后复制
db.users.find({age: {$lte: 28}}, {age: false}).forEach(printjson);
登录后复制
9、forEach传递函数显示信息
登录后复制
db.things.find({x:4}).forEach(function(x) {print(tojson(x));});
登录后复制


本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

mongodb一般用哪个版本 mongodb一般用哪个版本 Apr 07, 2024 pm 05:48 PM

推荐使用 MongoDB 最新版本(当前为 5.0),因为它提供了最新特性和改进。选择版本时,需考虑功能需求、兼容性、稳定性和社区支持,例如:最新版本具有事务、聚合管道优化等特性。确保版本与应用程序兼容。生产环境选择长期支持版本。最新版本有更活跃的社区支持。

百度网盘app怎么用 百度网盘app怎么用 Mar 27, 2024 pm 06:46 PM

在如今云存储已经成为我们日常生活和工作中不可或缺的一部分。百度网盘作为国内领先的云存储服务之一,凭借其强大的存储功能、高效的传输速度以及便捷的操作体验,赢得了广大用户的青睐。而且无论你是想要备份重要文件、分享资料,还是在线观看视频、听取音乐,百度网盘都能满足你的需求。但是很多用户们可能对百度网盘app的具体使用方法还不了解,那么这篇教程就将为大家详细介绍百度网盘app如何使用,还有疑惑的用户们就快来跟着本文详细了解一下吧!百度云网盘怎么用:一、安装首先,下载并安装百度云软件时,请选择自定义安装选

网易邮箱大师怎么用 网易邮箱大师怎么用 Mar 27, 2024 pm 05:32 PM

网易邮箱,作为中国网民广泛使用的一种电子邮箱,一直以来以其稳定、高效的服务赢得了用户的信赖。而网易邮箱大师,则是专为手机用户打造的邮箱软件,它极大地简化了邮件的收发流程,让我们的邮件处理变得更加便捷。那么网易邮箱大师该如何使用,具体又有哪些功能呢,下文中本站小编将为大家带来详细的内容介绍,希望能帮助到大家!首先,您可以在手机应用商店搜索并下载网易邮箱大师应用。在应用宝或百度手机助手中搜索“网易邮箱大师”,然后按照提示进行安装即可。下载安装完成后,我们打开网易邮箱账号并进行登录,登录界面如下图所示

nodejs和vuejs区别 nodejs和vuejs区别 Apr 21, 2024 am 04:17 AM

Node.js 是一种服务器端 JavaScript 运行时,而 Vue.js 是一个客户端 JavaScript 框架,用于创建交互式用户界面。Node.js 用于服务器端开发,如后端服务 API 开发和数据处理,而 Vue.js 用于客户端开发,如单页面应用程序和响应式用户界面。

BTCC教学:如何在BTCC交易所绑定使用MetaMask钱包? BTCC教学:如何在BTCC交易所绑定使用MetaMask钱包? Apr 26, 2024 am 09:40 AM

MetaMask(中文也叫小狐狸钱包)是一款免费的、广受好评的加密钱包软件。目前,BTCC已支持绑定MetaMask钱包,绑定后可使用MetaMask钱包进行快速登入,储值、买币等,且首次绑定还可获得20USDT体验金。在BTCCMetaMask钱包教学中,我们将详细介绍如何注册和使用MetaMask,以及如何在BTCC绑定并使用小狐狸钱包。MetaMask钱包是什么?MetaMask小狐狸钱包拥有超过3,000万用户,是当今最受欢迎的加密货币钱包之一。它可免费​​使用,可作为扩充功能安装在网络

mongodb创建的数据库在哪里 mongodb创建的数据库在哪里 Apr 07, 2024 pm 05:39 PM

MongoDB 数据库的数据存储在指定的数据目录中,该目录可以位于本地文件系统、网络文件系统或云存储中,具体位置如下:本地文件系统:默认路径为 Linux/macOS:/data/db,Windows:C:\data\db。网络文件系统:路径取决于文件系统。云存储:路径由云存储提供商决定。

mongodb数据库的优势有哪些 mongodb数据库的优势有哪些 Apr 07, 2024 pm 05:21 PM

MongoDB 数据库以其灵活、可扩展和高性能而闻名。它的优势包括:文档数据模型,允许以灵活和非结构化的方式存储数据。水平可扩展性,可通过分片扩展到多个服务器。查询灵活性,支持复杂的查询和聚合操作。数据复制和容错,确保数据的冗余和高可用性。JSON 支持,便于与前端应用程序集成。高性能,即使处理大量数据也能实现快速响应。开源,可定制且免费使用。

小米汽车app怎么用 小米汽车app怎么用 Apr 01, 2024 pm 09:19 PM

小米汽车软件提供远程车控功能,让用户可以通过手机或电脑远程控制车辆,例如开关车辆的门窗、启动引擎、控制车辆的空调和音响等,下文就是这个软件的使用及内容,一起了解下吧。小米汽车app功能及使用方法大全1、小米汽车app在3月25日上线苹果AppStore,现在安卓手机的应用商店中也可以下载了;购车:了解小米汽车核心亮点和技术参数,可预约试驾、配置订购您的小米汽车,支持在线处理提车待办事项。3、社区:了解小米汽车品牌资讯,交流用车体验,分享精彩车生活;4、车控:手机就是遥控器,远程控制,实时安防,轻

See all articles