成功启动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脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 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)

熱門話題

Java教學
1665
14
CakePHP 教程
1424
52
Laravel 教程
1321
25
PHP教程
1269
29
C# 教程
1249
24
使用 Composer 解決推薦系統的困境:andres-montanez/recommendations-bundle 的實踐 使用 Composer 解決推薦系統的困境:andres-montanez/recommendations-bundle 的實踐 Apr 18, 2025 am 11:48 AM

在開發一個電商網站時,我遇到了一個棘手的問題:如何為用戶提供個性化的商品推薦。最初,我嘗試了一些簡單的推薦算法,但效果並不理想,用戶的滿意度也因此受到影響。為了提升推薦系統的精度和效率,我決定採用更專業的解決方案。最終,我通過Composer安裝了andres-montanez/recommendations-bundle,這不僅解決了我的問題,還大大提升了推薦系統的性能。可以通過一下地址學習composer:學習地址

Navicat查看MongoDB數據庫密碼的方法 Navicat查看MongoDB數據庫密碼的方法 Apr 08, 2025 pm 09:39 PM

直接通過 Navicat 查看 MongoDB 密碼是不可能的,因為它以哈希值形式存儲。取回丟失密碼的方法:1. 重置密碼;2. 檢查配置文件(可能包含哈希值);3. 檢查代碼(可能硬編碼密碼)。

CentOS上GitLab的數據庫如何選擇 CentOS上GitLab的數據庫如何選擇 Apr 14, 2025 pm 04:48 PM

CentOS系統上GitLab數據庫部署指南選擇合適的數據庫是成功部署GitLab的關鍵步驟。 GitLab兼容多種數據庫,包括MySQL、PostgreSQL和MongoDB。本文將詳細介紹如何選擇並配置這些數據庫。數據庫選擇建議MySQL:一款廣泛應用的關係型數據庫管理系統(RDBMS),性能穩定,適用於大多數GitLab部署場景。 PostgreSQL:功能強大的開源RDBMS,支持複雜查詢和高級特性,適合處理大型數據集。 MongoDB:流行的NoSQL數據庫,擅長處理海

CentOS MongoDB備份策略是什麼 CentOS MongoDB備份策略是什麼 Apr 14, 2025 pm 04:51 PM

CentOS系統下MongoDB高效備份策略詳解本文將詳細介紹在CentOS系統上實施MongoDB備份的多種策略,以確保數據安全和業務連續性。我們將涵蓋手動備份、定時備份、自動化腳本備份以及Docker容器環境下的備份方法,並提供備份文件管理的最佳實踐。手動備份:利用mongodump命令進行手動全量備份,例如:mongodump-hlocalhost:27017-u用戶名-p密碼-d數據庫名稱-o/備份目錄此命令會將指定數據庫的數據及元數據導出到指定的備份目錄。

MongoDB 與關係數據庫:全面比較 MongoDB 與關係數據庫:全面比較 Apr 08, 2025 pm 06:30 PM

MongoDB與關係型數據庫:深度對比本文將深入探討NoSQL數據庫MongoDB與傳統關係型數據庫(如MySQL和SQLServer)的差異。關係型數據庫採用行和列的表格結構組織數據,而MongoDB則使用靈活的面向文檔模型,更適應現代應用的需求。主要區別數據結構:關係型數據庫使用預定義模式的表格存儲數據,表間關係通過主鍵和外鍵建立;MongoDB使用類似JSON的BSON文檔存儲在集合中,每個文檔結構可獨立變化,實現無模式設計。架構設計:關係型數據庫需要預先定義固定的模式;MongoDB支持

Debian MongoDB如何進行數據加密 Debian MongoDB如何進行數據加密 Apr 12, 2025 pm 08:03 PM

在Debian系統上為MongoDB數據庫加密,需要遵循以下步驟:第一步:安裝MongoDB首先,確保您的Debian系統已安裝MongoDB。如果沒有,請參考MongoDB官方文檔進行安裝:https://docs.mongodb.com/manual/tutorial/install-mongodb-on-debian/第二步:生成加密密鑰文件創建一個包含加密密鑰的文件,並設置正確的權限:ddif=/dev/urandomof=/etc/mongodb-keyfilebs=512

連接mongodb的工具有哪些 連接mongodb的工具有哪些 Apr 12, 2025 am 06:51 AM

連接MongoDB的工具主要有:1. MongoDB Shell,適用於快速查看數據和執行簡單操作;2. 編程語言驅動程序(如PyMongo, MongoDB Java Driver, MongoDB Node.js Driver),適合應用開發,但需掌握其使用方法;3. GUI工具(如Robo 3T, Compass),提供圖形化界面,方便初學者和快速數據查看。選擇工具需考慮應用場景和技術棧,並註意連接字符串配置、權限管理及性能優化,如使用連接池和索引。

mongodb怎麼設置用戶 mongodb怎麼設置用戶 Apr 12, 2025 am 08:51 AM

要設置 MongoDB 用戶,請按照以下步驟操作:1. 連接到服務器並創建管理員用戶。 2. 創建要授予用戶訪問權限的數據庫。 3. 使用 createUser 命令創建用戶並指定其角色和數據庫訪問權限。 4. 使用 getUsers 命令檢查創建的用戶。 5. 可選地設置其他權限或授予用戶對特定集合的權限。

See all articles