MongoDB服务端JavaScript脚本使用方法_MongoDB_脚本之家

Posted by

常用JavaScript语句

  • 启动 & 关闭

复制代码 代码如下: db.getSiblingDB
db.getCollectionNames() db.getCollection
db.printCollectionStats()在mongo shell运行JavaScript脚本切换数据库:

启动

复制代码 代码如下:use

若启动时,不指定任何参数, MongoDB 会默认使用 /data/db
目录存储数据,我们可以使用 –dbpath
来指定其它的路径,比如我使用的是下面这样的命令启动的:mongod –dbpath
/Users/zcw/dev/MongoDB/db上面这个是我的工作目录,直接将 MongoDB
的程序和数据库放在一起,我方便学习管理。

var total = 0;var dbaStatCollections = function(){}; dbaStatCollections = function(){ collNames = db.getCollectionNames(); for (var index = 0; index < collNames.length; index++) { var coll = db.getCollection; var stats = coll.stats(); print('ns,count,size,totalIndexSize'); print(stats.ns + ',' + stats.count + ',' + stats.size + ',' + stats.totalIndexSize); }} dbaStatCollections();

我们还可以在连接数据时指定服务器地址、端口号以及数据名等参数,比如:

可将上述脚本保存为dbaStatCollections.js,

mongo mongo-db.xingzhewujiang.com:30000/ahaInsight

在linux shell下运行

关闭

复制代码 代码如下:mongo localhost:27017/
dbaStatCollections.js

> use admin> db.shutdownServer()

或在mongo shell下运行 复制代码
代码如下:load(“dbaStatCollections.js”)

要注意的是,这个命令只允许在本地,或是一个经过认证的客户端。

在服务端存储JavaScript函数

  • 运行 shell
db.system.js.remove({"_id":"dbaStatCollections"}); db.system.js.save( { _id : "dbaStatCollections" , value : function () { collNames = db.getCollectionNames(); for (var index = 0; index < collNames.length; index++) { var coll = db.getCollection; var stats = coll.stats(); print('ns,count,size,totalIndexSize'); print(stats.ns + ',' + stats.count + ',' + stats.size + ',' + stats.totalIndexSize); } }}); db.loadServerScripts(); dbaStatCollections();

在当前JavaScript上下文中,可以使用该函数。退出该会话后,该函数不会被保存。只可在Primary执行。

mongo shell

备注:以上输出结果保存为CSV文件打开。本文出自 “SQL Server Deep Dives”
博客

启动时, shell 会打印出当前 shell
的版本号,连接到了哪个库以及一些帮助信息等,这是一个功能完备的
JavaScript 解释器,可以运行任意 JavaScript 程序,比如使用 JavaScript
标准库或者定义以及调用 JavaScript 函数等。

  • Shell 中的基本操作(在 shell
    中查看查看或操作数据,会用到4个基本操作:创建、读取、更新、删除,即
    CRUD 操作;)

创建通过 db.createCollection() 函数可以先创建一个集合:

> db.createCollection{ "ok" : 1 }

insert 可以将一个文档添加到集合中:

> post = {"title": "这是一篇文章", "content": "这是文章的内容。","date" : new Date()}{ "title" : "这是一篇文章", "content" : "这是文章的内容。", "date" : ISODate("2015-04-21T02:22:52.899Z")}

这是一个有效的 MongoDB 文档,所以可以用 insert 方法将其保存到集合中。

> db.blog.insertWriteResult({ "nInserted" : 1 })

接着可以使用 find 方法查找这篇文章:

> db.blog.find(){ "_id" : ObjectId("5535b574b705494e688e218a"), "title" : "这是一篇文章", "content" : "这是文章的内容。", "date" : ISODate("2015-04-21T02:22:52.899Z") }可以看到我们的数据都已经完整的保存下来了,同时,MongoDB 还为我们自动生成了一个 _id 参数。

读取find 与 findOne 方法可以用于查询集合里的文档:

> db.blog.findOne(){ "_id" : ObjectId("5535b574b705494e688e218a"), "title" : "这是一篇文章", "content" : "这是文章的内容。", "date" : ISODate("2015-04-21T02:22:52.899Z")}

更新使用 update
修改博客文章,它至少接受两个参数,第一个是限定条件,第二个是新文档,比如我们现在要给
post 加上评论列表:

> post.comments = [][ ]

然后,用新版本的 post 替换标题为 《这是一篇文章》的文章:

> db.blog.update({"title":"这是一篇文章"},post)WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })> db.blog.findOne(){ "_id" : ObjectId("5535b574b705494e688e218a"), "title" : "这是一篇文章", "content" : "这是文章的内容。", "date" : ISODate("2015-04-21T02:22:52.899Z"), "comments" : [ ]}可以看到,comments 已经更新到原来的那个 post 中去了。

删除使用 remove
可以删除集合中的文档,若没有任何限定参数,它将删除集合中的所有数据,也可以像下面这样,删除标题为《这是一篇文章》的文章:

> db.blog.remove({"title":"这是一篇文章"})WriteResult({ "nRemoved" : 1 })> db.blog.find()> 

除了交互式的使用 shell 外,我们还可以将命令保存在一个文件中,比如
script.js ,然后使用 mongo
命令直接执行它们,一次可以传入多个文件名,mongo shell
会依次执行传入的脚本,然后退出:

mongo script.js script1.js

如果希望指定主机和端口来运行上面的脚本,还可以这样做:

mongo --quiet host.name:30000/dbname script.js script1.js

—quiet 可以让 mongo shell不打印 MongoDB shell version…
这样的提示信息。

在交互式的命令行中,还可以使用 load() 函数加载并运行脚本:

> load("script.js")i am a string printed by script.js

知道这个之后,我们可以把一些能用的函数保存到一个文件里面,然后再将他们加载进
shell 交互界面里面来:

创建一个名为 connectTo.js 的文件,内容如下:

/** * 链接到指定的数据库,然后将 db 指向这个链接 */var connectTo = function(port, dbname) { if  { port = 27017; } if  { dbname = "test" } db = connect("localhost:" + port + "/" + dbname) return db}

然后我们进入 shell :

> typeof connectToundefined> load("connectTo.js")true> typeof connectTofunction

我们可以使用脚本让能用的管理和任务自动化,比如,我们想在每一次 shell
启用时,都加载上面定义的那个函数,这个时候我们可以用到一个名为
.mongorc.js 的文件。

在自己的家目录中(不同的系统都不一样),新建一个名为 .mongorc.js
的文件,然后写入下面这些内容:

print("你好,我来自 .mongorc.js 文件")

然后,重新进入 shell:

mongoMongoDB shell version: 3.0.2connecting to: test你好,我来自 .mongorc.js 文件
  • MongoDB 客户端

相关文章

Leave a Reply

电子邮件地址不会被公开。 必填项已用*标注