mongodb学习05 操作详解(3)
高级查询选项
//简单查询
var cursor = db.foo.find({"foo" : "bar"})
//封装查询
var cursor = db.foo.find({"foo" : "bar"}).sort({"x" : 1})
实际情况不是将
{"foo" : "bar"}作为查询直接发送给数据库,而是先将查询封 装在一个更大的文档中;shell会把查询从{"foo" : "bar"}`转换成 {"\(query" : {"foo" : "bar"},"\)orderby" : {"x" : 1}};$maxscan: 指定本次查询中扫描文档数量的上限。
db.foo.find(criteria)._addSpecial("$maxscan", 20)
$min: 查询的开始条件。在这样的查询中,文档必须与索引的键完全匹配。查询中会强 制使用给定的索引。$max: 查询的结束条件。在这样的查询中,文档必须与索引的键完全匹配。查询中会强 制使用给定的索引。$showDiskLoc: 用于显示该条结果在磁盘上的位置。
db.foo.find()._addSpecial('$showDiskLoc',true);
获取一致结果
数据处理通常的做法就是先把数据从 MongoDB 中取出来,然后做一些变换,最后再存回去:
如果结果集比较大,MongoDB 可能会多次返 回同一个文档;



对查询进行快照;如果使用了这个选项,查询就在
_id索引上遍历执行,这样可以保证每个文档只被返回一次。快照会使查询变慢,所以应该只在必要时使用快照。
db.foo.find().snapshot();
游标生命周期
- 服务器端,游标消耗内存和其他资源;
- 所以要在合理的前提下尽量保证尽快释放游标;
- 游标完成匹配结果的迭代时,它 会清除自身;
- 如果客户端的游标已经不在作用域内了,驱动程序会向服务器 发送一条特别的消息,让其销毁游标;
- 如果一个游标在 10 分钟内没有使用的话,数据库游标也会自 动销毁;
- 有时的确希望游标持续的时间长一些,多数驱动程序都实现了一个叫
immortal的函数,或者类似的机制,来告知数据库不要让游标超时销毁。
数据库命令
runCommand
db.runCommand({"drop" : "test"});
db.test.drop()
db.listCommands(): 可以看到所有的数据库命令;
数据库命令工作原理
- 数据库命令总会返回一个包含 "ok" 键的文档。
- 如果 "ok" 的值是 1,说明命令执行 成功了;
- 如果值是 0,命令执行失败,命令的返回文档中就会有一个额外的键
errmsg MongoDB中的命令被实现为一种特在$cmd集合上执行殊类型的查询;
db.runCommand({"drop" : "test"});
db.$cmd.findOne({"drop" : "test"});
- 有些命令需要有管理员权限,而且要在
admin数据库上才能执行;可以使用adminCommand而不是runCommand: - 数据库命令是少数与字段顺序相关的地方之一:命令名称必须是命 令中的第一个字段。
修改时间字符为date类型
db.celebrity_news.find({}).forEach(function(doc) {
db.celebrity_news.update({_id: doc._id}, {$set: {newsTime: new Date(doc.newsTime)}})
})
远程导出数据
mongoexport -h 远程地址 --port 端口 -u 用户名 -p 密码 -d 数据库 -c 集合 -f 字段1,字段2 -o 本地文件名
mongodb学习05 操作详解(3)的更多相关文章
- mongodb学习04 操作详解(2)
查找文档 筛选查找 db.collection.find(); 返回一个集合中文档的子集,子集的 范围从 0 个文档到整个集合; db.collection.findOne(); 返回筛选的一个文档; ...
- mongodb学习03 操作详解
插入文档 db.test.insert({"name":"jinks"}); 批量插入 db.test.insert([{}, {}, {}]); 一次批量插入 ...
- MongoDB各种查询操作详解
这篇文章主要介绍了MongoDB各种查询操作详解,包括比较查询.关联查询.数组查询等,需要的朋友可以参考下 一.find操作 MongoDB中使用find来进行查询,通过指定find的第一个参数可 ...
- js学习--DOM操作详解大全一(浏览器对象)
一.客户端中的window对象 window对象表示当前浏览器的窗口,它是一个顶级对象,我们创建的所有对象.函数.变量都是window对象的成员. window对象自带了一些非常有用的方法.属性. w ...
- js学习--DOM操作详解大全 前奏(认识DOM)
一 . 节点属性 DOM 是树型结构,相应的,可以通过一些节点属性来遍历节点树: 方法 说明 nodeName 节点名称,相当于tagName.属性节点返回属性名,文本节点返回#text.nodeNa ...
- js学习--DOM操作详解大全二(window对象)
一.window - 计时器 1、setTimeout()可以用来在指定的时间之后单次调用函数.setTimeount(f,1000);//一秒后调用函数fclearTimeout();取消函数的执行 ...
- 从51跳cortex-m0学习2——程序详解
跳cortex-m0——思想转变>之后又一入门级文章,在此不敢请老鸟们过目.不过要是老鸟们低头瞅了一眼,发现错误,还请教育之,那更是感激不尽.与Cortex在某些操作方式上的异同,让自己对Cor ...
- MySQL 操作详解
MySQL 操作详解 一.实验简介 本节实验中学习并实践 MySQL 上创建数据库.创建表.查找信息等详细的语法及参数使用方法. 二.创建并使用数据库 1. 创建并选择数据库 使用SHOW语句找出服务 ...
- Hadoop深入学习:MapTask详解
转自:http://flyingdutchman.iteye.com/blog/1878775#bc2337280 Hadoop深入学习:MapTask详解 博客分类: Hadoop MapTask执 ...
随机推荐
- JQuery 鼠标事件简介
mouseover事件于用户把鼠标从一个元素移动到另外一个元素上时触发,mouseout事件于用户把鼠标移出一个元素时触发. 下面为你详细介绍下jquery中的鼠标事件: (1):click事件:cl ...
- telnet测试制定地址端口号
cmd下,命令 telnel+空格+ip或者网站+空格+端口号 端口可以用: 需要开通windows服务:
- 自定义View和ViewGroup
为了扫除学习中的盲点,尽可能多的覆盖Android知识的边边角角,决定对自定义View做一个稍微全面一点的使用方法总结,在内容上面并没有什么独特的地方,其他大神们的博客上面基本上都有讲这方面的内容,如 ...
- CCF 最大的矩形
问题描述 试题编号: 3 试题名称: 最大的矩形 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 在横轴上放了n个相邻的矩形,每个矩形的宽度是1,而第i(1 ≤ i ≤ n)个 ...
- 51nod 1070 Bash游戏 V4 (斐波那契博弈)
题目:传送门. 有一堆个数为n(n>=2)的石子,游戏双方轮流取石子,规则如下: 1)先手不能在第一次把所有的石子取完,至少取1颗: 2)之后每次可以取的石子数至少为1,至多为对手刚取的石子数的 ...
- win7下安装openpyxl
想使用python来操作Excel,看资料据说openpyxl非常好用,于是到https://pypi.python.org/pypi/openpyxl下载了安装包.下面就来说说安装步骤,也算是对自己 ...
- IOS - UIViewController的生命周期
1)Load周期 2)Unload周期 在UIViewController中,view(黑体的view指的是controller的view属性)有两个循环:加载和卸载循环.当程序的一部分向contro ...
- 如何将Js代码封装成Jquery插件
很多相同的Jquery代码会在很多页面使用,每次都复制粘贴太麻烦了,不如封装成一个Jquery插件就方便了,至于影响网页的速度不,我就没有测试了哈. 代码如下 这是一个自定闪烁打印文字的Jquery特 ...
- php与xpath使用操作文本节点
<?php $html="<p> 对于2014年,省统计局的统计分析显示,我省消费流通领域受诸多因素的影响,有机遇也有挑战.但值得注意的是,消费增长还存在不少制约因素,比如 ...
- 声明式事务-整合Spring、Hibernate
编程式事务:通过编码的方式,让事务处理的代码侵入到核心的业务代码中. 声明式事务:完成了事务处理的代码和业务核心代码的解耦合.提供事务处理代码的复用性和降低维护成本. 声明式事务:aop最典型的应用. ...