暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

11002_mongodb mongo shell介绍

惠星星 2024-08-05
246

介绍mongo shell

mongo shell是MongoDB JavaScript交互接口,可以使用mongo shell完成 查询、更新和维护MongoDB的操作。

启动mongo Shell

### 1. cd目录执行 cd <mongodb installation dir> ./bin/mongo 示例: $ cd /mongodb/bin/ $ ./mongo MongoDB shell version v3.6.17 > ### 2. 环境变量已配置: <mongodb installation dir>/bin 可以直接执行mongo 示例: $ mongo MongoDB shell version v3.6.17 >

说明:运行mongo 不加参数时,默认连接 localhost 的 27017接口

.mongorc.js 文件

当运行mongo时会检查os用户的 HOME 目录 JavaScript文件 .mongorc.js

如果存在,则先执行文件中内容,–eval 参数指定的js文件优化执行,–norc 参数

可禁止 .mongorc.js 执行。

.mongorc.js 文件是 MongoDB 的一个配置文件,它允许你在每次启动 MongoDB shell (mongo) 时自动执行特定的 JavaScript 代码。这个文件通常位于用户的主目录中(例如,~/.mongorc.js),并且在 MongoDB shell 启动时会自动加载和执行。

作用

  1. 自动化配置:可以用来设置默认数据库、默认集合、或执行其他初始化操作。
  2. 定义函数:你可以在这个文件中定义常用的函数,方便在 shell 中直接调用。
  3. 别名和快捷方式:创建常用命令的别名或快捷方式,提高操作效率。
  4. 加载外部库:可以加载和使用外部的 JavaScript 库。
  5. 日志记录:可以记录 shell 会话的日志。

示例

下面是一个 .mongorc.js 文件的示例,展示了上述功能的实现:

// 设置默认数据库 db = db.getSiblingDB('myDatabase'); // 打印欢迎信息 print("Welcome to the MongoDB shell!"); // 定义一个常用的查询函数 function findRecentDocuments(collectionName, days) { const collection = db.getCollection(collectionName); const recentDate = new Date(); recentDate.setDate(recentDate.getDate() - days); return collection.find({ createdAt: { $gte: recentDate } }).toArray(); } // 创建一个别名,用于快速查看集合中的文档数 DBCollection.prototype.countDocuments = function() { return this.count(); }; // 加载外部库 load('/path/to/external/library.js'); // 记录会话日志 const originalPrint = print; print = function(message) { originalPrint(message); // 追加日志到文件 const fs = require('fs'); fs.write('/path/to/log.txt', message + '\n', 'a'); };

mongo Shell命令

1. 查询当前数据库

> db test >

2. 切换数据库

use <database> > use orastar switched to db orastar > db orastar >

3. 查询有哪些数据库

> show dbs admin 0.000GB config 0.000GB local 0.000GB orastar 0.000GB >

4. 插入数据

可以切换到不存在的数据库,并且给不存在的表插入数据,当在数据库存储数据时,

自动创建数据库和表。

> show dbs admin 0.000GB config 0.000GB local 0.000GB orastar 0.000GB > use myNewDatabase switched to db myNewDatabase > db.myCollection.insertOne( { x: 1 } ); { "acknowledged" : true, "insertedId" : ObjectId("66aac195c3973a5e06072f53") } > db.myCollection.find() { "_id" : ObjectId("66aac195c3973a5e06072f53"), "x" : 1 } >
  1. db.myCollection.insertOne: mongo中插入数据的命令

  2. db: 当前数据库

  3. myCollection: 表名,mongo中叫 collection。

5. 特殊表名查询

db.getCollection("3 test").find() db.getCollection("3-test").find() db.getCollection("stats").find()

6. 超长命令处理

mongo 中脚本限制为 4095 代码点每行,如果一行超过4095代码点,

将会被截取(truncate)

说明:代码点(codepoints ): 可理解为字符,绝大部分字符占1个代码点。

7. 输出美化

> db.myCollection.insert({x:1001,name:"zhangsan",addr:"xian"}) WriteResult({ "nInserted" : 1 }) > > db.myCollection.deleteOne({x:1}) { "acknowledged" : true, "deletedCount" : 1 } > db.myCollection.find().pretty() { "_id" : ObjectId("66aac6d73b4c71e67b7c291a"), "x" : 1001, "name" : "zhangsan", "addr" : "xian" } > db.myCollection.find() { "_id" : ObjectId("66aac6d73b4c71e67b7c291a"), "x" : 1001, "name" : "zhangsan", "addr" : "xian" } > db.myCollection.find().pretty() { "_id" : ObjectId("66aac6d73b4c71e67b7c291a"), "x" : 1001, "name" : "zhangsan", "addr" : "xian" } >

8. 历史命令(up/down键)

使用 up/down键可以 显示历史命令

9. 命令补全()

db.myCollection.c<Tab>

10. 退出命令行

quit() or <Ctrl-C>

11. 修改提示词

在mongo shell中可以使用变量 prompt变更提示词,也可以将脚本添加到 .mongorc.js 文件中,每次登陆mongo shell生效 ### 1. 显示操作行号 cmdCount = 1; prompt = function() { return (cmdCount++) + "> "; } ### 2. 显示数据库和主机 cmdCount = 1; prompt = function() { return (cmdCount++) + "> "; } ### 3. 显示系统起动时间及文档数量 prompt = function() { return "Uptime:"+db.serverStatus().uptime+" Documents:"+db.stats().objects+" > "; } ### 4. 使用外部编辑器 export EDITOR=vim mongo export EDITOR=vi $ mongo MongoDB shell version v3.6.17 > function myFunction () { } > edit myFunction > myFunction function myFunction() {print("This was edited"); } >

12. 修改批量显示

使用db.collection.find()命令时默认每天显示20行,输入 it 显示下一批20行,

可使用以下代码修改默认批量行数

DBQuery.shellBatchSize = 10;

13. mongo Shell帮助

### 1. 启动mongo shell帮助 mongo --help ### 2. mongo shell内帮助 help ### 3. 数据库帮助 db.help() ### 4. 查看函数实现代码,不输入函数()括号 db.updateUser ### 5. 表级帮助 show collections db.collection.help() #### 函数实现 db.collection.save ### 6、 游标级帮助 #### 获取帮助 db.collection.find().help() #### 获取实现代码,不输入函数()括号 db.collection.find().toArray ### 7. 获取包装对象 help misc

14. mongo Shell中的多行操作

行末以’(’、’{’、’[‘结尾的,下面一行以’…'开始,直到添加 对应的结束符号

‘)’、’}’、’]’,如下所示

if ( x > 0 ) { count++; print (x); } > if ( x > 0 ) { ... count++; ... print (x); ... } >

参考资料

https://www.mongodb.com/docs/manual/
最后修改时间:2024-08-05 09:54:06
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论