存储过程
关系型数据库的存储过程描述为:一组为了完成特定功能的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
相关推荐
window_mongodb执行过程个人笔记——不建议下载.txt Mongodb,分布式文档存储数据库,由C++语言编写,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个高性能,开源,无模式的文档型数据库,是当前...
入门资料库-具有VueX,Bootstrap,Node.js / Express,具有身份验证和电子邮件验证功能的mongoDB的Vue 带有Node.js / Express和mongoDB后端incl的前端Vue.js SPA的启动程序存储库。 预定义的身份验证,电子邮件验证...
MongoDB内置的水平扩展机制提供了从百万到十亿级别的数据量处理能力,完全可以满足Web2.0和移动互联网的数据存储需求,其开箱即用的特性也大大降低了中小型网站的运维成本。对于创业团队,我建议选择MongoDB
在使用MongoDB做产品原型的过程中,我们总结了MonogDB的一些亮点:使用JSON风格语法,易于掌握和理解:MongoDB使用JSON的变种BSON作为内部存储的格式和语法。针对MongoDB的操作都使用JSON风格语法,客户端提交或接收...
4.索引创建,游标、存储过程使用 5.聚合运算,支持Group,Aggregation, MapReduce 的统计和集合 6.全文检索和地理位置信息检索使用 7.主从复制搭建 8.sharding分片集群 9.数据库监控和profiling使用 通过这些学习对...
在过程中或在存储库根目录中的.env文件中,传递以下环境变量: 钥匙 描述 必需的 NODE_ENV 环境名称 错误的 NODE_HOST_URL 网站的基本URL(不带斜杠) 真的 NODE_MONGODB_URL MongoDB连接字符串 真的 NODE_...
MongoDB C#实例,采用最新mongodb的c#驱动1.8。
MongoDB的安装配置,已试过正确,安装好后可以直接存储图片、文档等
MongoDB是python中一种常用的非关系型数据库,我们可以用它来存储一些数据,这里是它的安装的详细过程
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数据库:它是一种NoSQL...阅读建议: 此资源以开发简化版 MongoDB 学习其原理和内核,不仅是代码编写实现也更注重内容上的需求分析和方案设计,所以在学习的过程要结合这些内容一起来实践,并调试对应的代码。
Docker提供了多种插件方式管理日志,本文就对使用MongoDB存储Docker日志的过程做个记录。 数据流 Docker产生的日期 发送到 FluentD,然后FluentD在转存到MongoDB。 配置Fluentd 前提:操作系统是CentOS7,已安装...
分片(sharding)是指将数据拆分,将其分散存在不同的机器上的过程。有时也用分区(partitioning)来表示这个概念。将数据分散到不同的机器上,不需要功能强大的大型计算机就可以储存更多的数据,处理更多的负载。
由于每个mongodb的文档有16M的大小限制,所以即使你是存储ObjectID也是不够的。我们可以使用很经典的处理方法"父级引用"---用一个文档存储主机,在每个日志文档中保存这个主机的ObjectID。 MongoDB数据库设计全文共...
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是一个非关系型数据库软件(NoSql),以类似json的形式bson存储数据,bson有二进制的json的意思,官方说bson的效率更高,很适合存储类似于对象的数据,这里权当把自己学习的过程记录下来。 关于MongoDB的安装方法给...
该存储库附带一个视频,该视频介绍了使用MongoDB Stitch创建数据终结点API的过程。 在查看随附的视频。 文章 说明如何在10分钟(或更少)内创建API 要求 如果要继续学习,则需要满足以下条件: 免费的帐户。 -...
分片是指将数据拆分,将其分散存在不同机器上的过程.有时也叫分区.将数据分散在不同的机器上,不需要功能 强大的大型计算机就可以存储更多的数据,处理更大的负载. 使用几乎所有数据库软件都能进行手动分片,应用需要...
介绍设置MongoDB副本集是一个复杂的过程,需要进行许多配置。 使用mongodb-runrs,您现在可以调用单个命令以在不到60秒的时间内设置N成员副本集。 可以设计副本集,使其不会干扰您可能拥有的任何现有mongod进程。...
最近学习爬虫需要用到MongoDB来存储数据,在安装过程遇到了一些坑,在这里总结一些。 MongoDB(来自于英文单词“Humongous”,中文含义为“庞大”)是可以应用于各种规模的企业、各个行业以及各类应用程序的开源...