`
zc985552943
  • 浏览: 287138 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
Babe4ca6-5e6f-33aa-9078-762ee3ccfb7e
云计算--hadoop
浏览量:11471
5e98c2c1-2a82-3388-bc80-7fca0170bb12
redis解说
浏览量:26632
088014c7-4d3f-39ce-b72e-4ebe7046a134
MongoDB读书笔记
浏览量:15611
D2b74847-c860-3e26-96fe-3fa4498d6348
Maven读书笔记
浏览量:26665
688db20f-402d-3a1d-8188-d6153d6c7465
Java通信
浏览量:13379
社区版块
存档分类
最新评论

06_MongoDB_存储过程

阅读更多

存储过程

关系型数据库的存储过程描述为:一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它

mongoDB也有存储过程,但是mongoDB是用javascript来写的,这正是mongoDB的魅力。

保存存储过程

mongodb的存储过程是存放在db.system.js表中,我们先来一个简单的例子:

function add(x,y){
	return x+y;
}

 现在我们将这个存储过程保存到db.system.js的表中:

> db.system.js.save({"_id":"myAdd",value:function add(x,y){ return x+y; }});

 其中:_id和value属性是必须的,如果没有_id这个属性,会导致以后无法调用(到目前为止我还没有找到调用的方式方法,如果大家有什么办法,请回复我。)。你可以增加其他的属性来描述这个存储过程。比如:

> db.system.js.save({"_id":"myAdd1",value:function add(x,y){ return x+y; },"discrption":"x is number ,and y is number"});

 

增加了discrption来描述这个函数。

查询存储过程

可以使用find来查询存储过程,和之前04_MongoDB_查询文档中描述一样例如:

//直接查询所有的存储过程
> db.system.js.find();
{ "_id" : "myAdd", "value" : function __cf__13__f__add(x, y) {
    return x + y;
} }
{ "_id" : "myAdd1", "value" : function __cf__14__f__add(x, y) {
    return x + y;
}, "discrption" : "x is number ,and y is number" }
{ "_id" : ObjectId("5343686ba6a21def9951af1c"), "value" : function __cf__15__f__
add(x, y) {
    return x + y;
} }
//查询_id为myAdd1的存储过程
> db.system.js.find({"_id":"myAdd1"});
{ "_id" : "myAdd1", "value" : function __cf__16__f__add(x, y) {
    return x + y;
}, "discrption" : "x is number ,and y is number" }
>

 执行存储过程

保存好的存储是如何执行的呢?

这里有个牛逼的函数,eval;如果对js了解的人肯定知道这个eval。用来执行一段字符串(描述的比较肤浅,呵呵),在mongodb中使用db.eval("函数名(参数1,参数2...)"),来执行存储过程(函数名找的是_id):

> db.eval('myAdd(1,2)');
3

 eval会找到对应_id属性执行存储过程。

db.eval()是一个比较奇怪的东西,我们可以将存储过程的逻辑直接在里面并同时调用,而无需事先声明存储过程的逻辑。

> db.eval(function(){return 3+3;});
6

 

 

1
1
分享到:
评论

相关推荐

    window_mongodb执行过程个人笔记——不建议下载.txt

    window_mongodb执行过程个人笔记——不建议下载.txt Mongodb,分布式文档存储数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个高性能,开源,无模式的文档型数据库,是当前...

    vueX_nodeExpress_mongoDB_wAuth_starter:带有Node.jsExpress和mongoDB后端incl的前端Vue.js SPA的启动程序存储库。 预定义的身份验证,电子邮件验证和删除帐户功能

    入门资料库-具有VueX,Bootstrap,Node.js / Express,具有身份验证和电子邮件验证功能的mongoDB的Vue 带有Node.js / Express和mongoDB后端incl的前端Vue.js SPA的启动程序存储库。 预定义的身份验证,电子邮件验证...

    MongoDB_命令.docx 命令集合

    MongoDB内置的水平扩展机制提供了从百万到十亿级别的数据量处理能力,完全可以满足Web2.0和移动互联网的数据存储需求,其开箱即用的特性也大大降低了中小型网站的运维成本。对于创业团队,我建议选择MongoDB

    MongoDB基本操作指南

    在使用MongoDB做产品原型的过程中,我们总结了MonogDB的一些亮点:使用JSON风格语法,易于掌握和理解:MongoDB使用JSON的变种BSON作为内部存储的格式和语法。针对MongoDB的操作都使用JSON风格语法,客户端提交或接收...

    Mongodb最佳实践

    4.索引创建,游标、存储过程使用 5.聚合运算,支持Group,Aggregation, MapReduce 的统计和集合 6.全文检索和地理位置信息检索使用 7.主从复制搭建 8.sharding分片集群 9.数据库监控和profiling使用 通过这些学习对...

    portfolio:作品集网站(v3)

    在过程中或在存储库根目录中的.env文件中,传递以下环境变量: 钥匙 描述 必需的 NODE_ENV 环境名称 错误的 NODE_HOST_URL 网站的基本URL(不带斜杠) 真的 NODE_MONGODB_URL MongoDB连接字符串 真的 NODE_...

    MongoDB C#实例

    MongoDB C#实例,采用最新mongodb的c#驱动1.8。

    MongoDB安装配置过程

    MongoDB的安装配置,已试过正确,安装好后可以直接存储图片、文档等

    windows下mongodb的安装

    MongoDB是python中一种常用的非关系型数据库,我们可以用它来存储一些数据,这里是它的安装的详细过程

    深入云计算 MongoDB管理与开发实战详解pdf.part1

    4.6 存储过程 4.7 本章小结 第5章 Capped集合 5.1 特性 5.2 使用和约束 5.3 应用 5.3.1 创建 capped collection 5.3.2 限制capped collection中对象个数 5.4 注意事项 5.5 本章小结 第6章 ...

    网络爬虫+MongoDB库

    MongoDB数据库:它是一种NoSQL...阅读建议: 此资源以开发简化版 MongoDB 学习其原理和内核,不仅是代码编写实现也更注重内容上的需求分析和方案设计,所以在学习的过程要结合这些内容一起来实践,并调试对应的代码。

    如何利用MongoDB存储Docker日志详解

    Docker提供了多种插件方式管理日志,本文就对使用MongoDB存储Docker日志的过程做个记录。 数据流 Docker产生的日期 发送到 FluentD,然后FluentD在转存到MongoDB。 配置Fluentd 前提:操作系统是CentOS7,已安装...

    mongodb分片.pdf

    分片(sharding)是指将数据拆分,将其分散存在不同的机器上的过程。有时也用分区(partitioning)来表示这个概念。将数据分散到不同的机器上,不需要功能强大的大型计算机就可以储存更多的数据,处理更多的负载。

    MongoDB数据库设计.pptx

    由于每个mongodb的文档有16M的大小限制,所以即使你是存储ObjectID也是不够的。我们可以使用很经典的处理方法"父级引用"---用一个文档存储主机,在每个日志文档中保存这个主机的ObjectID。 MongoDB数据库设计全文共...

    深入云计算 MongoDB管理与开发实战详解pdf.part2

    4.6 存储过程 4.7 本章小结 第5章 Capped集合 5.1 特性 5.2 使用和约束 5.3 应用 5.3.1 创建 capped collection 5.3.2 限制capped collection中对象个数 5.4 注意事项 5.5 本章小结 第6章 ...

    MongoDB基础命令以及操作示例详解

    Mongodb是一个非关系型数据库软件(NoSql),以类似json的形式bson存储数据,bson有二进制的json的意思,官方说bson的效率更高,很适合存储类似于对象的数据,这里权当把自己学习的过程记录下来。 关于MongoDB的安装方法给...

    10分钟数据API-mongodb-stitch:使用MongoDB Stitch在10分钟内创建数据API

    该存储库附带一个视频,该视频介绍了使用MongoDB Stitch创建数据终结点API的过程。 在查看随附的视频。 文章 说明如何在10分钟(或更少)内创建API 要求 如果要继续学习,则需要满足以下条件: 免费的帐户。 -...

    MongoDB分片详解

    分片是指将数据拆分,将其分散存在不同机器上的过程.有时也叫分区.将数据分散在不同的机器上,不需要功能 强大的大型计算机就可以存储更多的数据,处理更大的负载. 使用几乎所有数据库软件都能进行手动分片,应用需要...

    mongodb-runrs:仅使用一个命令即可运行MongoDB复制集以进行学习和开发

    介绍设置MongoDB副本集是一个复杂的过程,需要进行许多配置。 使用mongodb-runrs,您现在可以调用单个命令以在不到60秒的时间内设置N成员副本集。 可以设计副本集,使其不会干扰您可能拥有的任何现有mongod进程。...

    Windows 10下安装最新版MongoDB的完整步骤

    最近学习爬虫需要用到MongoDB来存储数据,在安装过程遇到了一些坑,在这里总结一些。 MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是可以应用于各种规模的企业、各个行业以及各类应用程序的开源...

Global site tag (gtag.js) - Google Analytics