mongodb存储过程
MongoDB支持存储过程的使用,它的存储过程是用javascript实现的,被存在于system.js表中,可以接收和输出参数,返回执行存储过程的状态值,也可以嵌套调用。
所以我理解的MongoDB的存储过程就是:
把javascript变量,存储到MongoDB的数据库的特殊集合:system.js表中,然后这些变量可以在何MongoDB的javascript上下文中调用,包括"$where"子句,db.eval调用,MapReduce作业。
1.添加存储过程
db.system.js.save({_id:存储过程名称,value:存储过程体}) //添加一个新的存储过程或者更新一个已经存在的存储过程 或者
db.system.js.insert({_id:存储过程名称,value:存储过程体}) //添加一个新的存储过程
其中:_id和value属性是必须的,如果没有_id这个属性,会导致无法调用。也可以增加其他的属性来描述这个存储过程。比如:
db.system.js.insert({_id:存储过程名称,value:存储过程体,discrption:"这是存储过程"})
2.修改存储过程
db.system.js.update({_id:存储过程名称},{value:存储过程体})
3.执行存储过程
db.eval('存储过程名称(参数)')
4.查找存储过程
db.system.js.find(); 以上命令都可以在mongodb shell命令窗口下执行,也可以写在javascript文件里执行。
下面的示例写在javascript文件里。
连接数据库有两种方法,如下,示例里面用的方法1
方法1:
db = connect("localhost:port/myDatabase"); 方法2:
new Mongo() 或者 new Mongo(<host>) 或者 new Mongo(<host:port>)
conn = new Mongo();
db = conn.getDB("myDatabase");
新建test.js,代码如下:
var db = connect( 'school' ); //连接的数据库名字为:school
db.courses.save({name:"英语",time:'周二 上午 8:00-9:50'});
db.courses.save({name:"数学",time:'周二 上午 10:00-12:00'});
db.courses.save({name:"语文",time:'周二 下午午 2:00-4:00'});
db.people.save({name:'刘湘',type:'teacher',age:28});
db.people.save({name:'王莎莎',type:'student',age:12}); //1.添加存储过程
//db.system.js.save({_id:存储过程名称,value:存储过程体})
db.system.js.save({_id:"getCoursesCount",value:function(){return db.courses.count();},description:'获取课程数'}); //db.system.js.insert({_id:存储过程名称,value:存储过程体})
db.system.js.insert({
_id:"getPeople",
value:function(type){
return type;
},
description:'显示根据类型显示人员'
}); //2.修改存储过程
//db.system.js.update({_id:存储过程名称},{value:存储过程体})
db.system.js.update({
_id:"getPeople"},{
value:function(type){
if(type==null){
return db.people.find().toArray();
}else {
return db.people.find({type:type}).toArray();
}
}
}); //3.执行存储过程
//db.eval('存储过程名称(参数)')
var obj=db.eval("getPeople()");
print(JSON.stringify(obj));
var obj1=db.eval("getPeople('student')");
print(JSON.stringify(obj1));
print(db.eval("getCoursesCount()")); //4.查找存储过程
//db.system.js.find();
var obj2= db.system.js.find();
print(JSON.stringify(obj2.toArray()));
找到test.js的文件位置,我的文件位置如下图,然后按住shift键,点击鼠标右键弹出一个菜单,选择 【在此处打开命令窗口(W)】
弹出命令窗口,接下来运行test.js,会有两种方法
方法1:
在命令窗口输入mongo test.js,按回车键,test.js就会被运行,如下图
方法2:在命令窗口输入 mongo 按回车键,然后输入load('test.js'),这样test.js也会被运行,如下图:
mongodb存储过程的更多相关文章
- MongoDB存储过程创建和使用一例
mongo的脚本是js语法,所以存储过程也是js语法. 创建: db.system.js.save( { _id: "saveAndCount", value : function ...
- mongodb use where and custom function to query mongodb存储过程
function name regexObjSubObjKey function code function(proto,value) { var match=false; var reg = new ...
- mongoDB数据库和Spring MVC的整合
之前一直用到的项目是Spring MVC+maven+mysql的,最近有些数据需要用到mongoDB数据库,现在做一些总结. 第一步:加载jar.maven配置 <!-- mongodb开始 ...
- MongoDB应用篇(转)
一.高级查询 1. 查询操作符 1.1 比较操作符$gt,$lt,$gte,$lte 实例: select * from things where field<value -- 等价于db.th ...
- mongodb进阶一之高级查询
上篇文章我们讲了mongodb的crud基本操作 http://blog.csdn.net/stronglyh/article/details/46812579 这篇我们来说说mongodb的进阶-- ...
- 【Mongodb教程 第十八课 】MongoDB常用命令 数据库命令 集合操作命令
面向文档的 NoSQL 数据库主要解决的问题不是高性能的并发读写,而是保证海量数据存储的同时,具有良好的查询性能. 条件操作符 <, <=, >, >= 这个操作符就不用多 ...
- 在MongoDB中执行查询与创建索引
实验目的: (1)掌握MongoDB中数据查询的方法: (2)掌握MongoDB中索引及其创建: 实验内容: 一. MongoDB中数据查询的方法: (1)find函数的使用: (2)条件操作符: a ...
- NoSql---MongoDB基本操作
MongoDB 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语 言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引.最后由于 MongoDB 可以支 ...
- Mongo管理
MongoDB存储引擎 一. WiredTiger引擎 1. MongoDB3.2版本以上,设置为存储引擎. 2. 基于文档级别的并发控制功能(锁机制) (1). 锁级别:文档级别 (2). ...
随机推荐
- 深入理解java虚拟机【Java内存结构】
Java虚拟机规范规定的java虚拟机内存其实就是java虚拟机运行时数据区,其架构如下: 其中方法区和堆是由所有线程共享的数据区. Java虚拟机栈,本地方法栈和程序计数器是线程隔离的数据区. (1 ...
- windowsXP用户被禁用导致不能网站登录
1.查看系统事件,发现弹出如下的错误 2.根据上面的错误,我们很容易就可以判断是禁用了账户引起的 2.1后面进入计算机管理,再进入用户管理 2.2双击点开Internet来宾用于,发现此用户已经停用了 ...
- Gradle的属性设置大全
Gradle作为一款项目构建工具,由于其强大.灵活.快速.完全兼容Ant等特性,越来越受到人们欢迎.Gradle的灵活有时候也会引起人们的困惑.比如在Gradle中设置变量和属性就有N种办法.由于Gr ...
- Express 4 更新改变文档
概览 从 Express 3 到Express 4 是一个巨大的变化,这意味着现存的 Express 3 应用在不更新依赖的情况下将不能工作. 这篇文章涵盖一下内容: Express 4 中的变化 一 ...
- CSS行高——line-height
初入前端的时候觉得CSS知道display.position.float就可以在布局上游刃有余了,随着以后工作问题层出不穷,才逐渐了解到CSS并不是几个style属性那么简单,最近看了一些关于行高的知 ...
- paip.执行shell cmd 命令uapi java php python总结
paip.执行shell cmd 命令uapi java php python总结 作者Attilax 艾龙, EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:h ...
- iOS-UIViewController视图控制器跳转界面的几种常用方法
一.最普通的视图控制器UIViewContoller 一个普通的视图控制器一般只有模态跳转的功能(ipad我不了解除外,这里只说iPhone),这个方法是所有视图控制器对象都可以用的,而实现这种功能, ...
- XML的简单学习
推荐入门级学习XML网址W3c http://www.w3school.com.cn/xml/xml_intro.asp 1: XML 指可扩展标记语言 XML 被设计用来传输和存储数据 ...
- python多线程生成缩略图
在img目录下7张图片 分别是 11.jpg 22.jpg 33.jpg 44.jpg 55.jpg 66.jpg 77.jpg #encoding=utf-8 import os import ti ...
- 于网站主机,DNS,域名解析,Web服务器关系详解
/*本文将介绍网站主机,DNS,域名解析,Web服务器关系,转载请保留以下版权*/ /*启明星工作室 www.dotnetcms.org 提供会议室预定系统,请假系统,helpdesk,工作日志系统 ...