高级查询选项

//简单查询
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)的更多相关文章

  1. mongodb学习04 操作详解(2)

    查找文档 筛选查找 db.collection.find(); 返回一个集合中文档的子集,子集的 范围从 0 个文档到整个集合; db.collection.findOne(); 返回筛选的一个文档; ...

  2. mongodb学习03 操作详解

    插入文档 db.test.insert({"name":"jinks"}); 批量插入 db.test.insert([{}, {}, {}]); 一次批量插入 ...

  3. MongoDB各种查询操作详解

    这篇文章主要介绍了MongoDB各种查询操作详解,包括比较查询.关联查询.数组查询等,需要的朋友可以参考下   一.find操作 MongoDB中使用find来进行查询,通过指定find的第一个参数可 ...

  4. js学习--DOM操作详解大全一(浏览器对象)

    一.客户端中的window对象 window对象表示当前浏览器的窗口,它是一个顶级对象,我们创建的所有对象.函数.变量都是window对象的成员. window对象自带了一些非常有用的方法.属性. w ...

  5. js学习--DOM操作详解大全 前奏(认识DOM)

    一 . 节点属性 DOM 是树型结构,相应的,可以通过一些节点属性来遍历节点树: 方法 说明 nodeName 节点名称,相当于tagName.属性节点返回属性名,文本节点返回#text.nodeNa ...

  6. js学习--DOM操作详解大全二(window对象)

    一.window - 计时器 1、setTimeout()可以用来在指定的时间之后单次调用函数.setTimeount(f,1000);//一秒后调用函数fclearTimeout();取消函数的执行 ...

  7. 从51跳cortex-m0学习2——程序详解

    跳cortex-m0——思想转变>之后又一入门级文章,在此不敢请老鸟们过目.不过要是老鸟们低头瞅了一眼,发现错误,还请教育之,那更是感激不尽.与Cortex在某些操作方式上的异同,让自己对Cor ...

  8. MySQL 操作详解

    MySQL 操作详解 一.实验简介 本节实验中学习并实践 MySQL 上创建数据库.创建表.查找信息等详细的语法及参数使用方法. 二.创建并使用数据库 1. 创建并选择数据库 使用SHOW语句找出服务 ...

  9. Hadoop深入学习:MapTask详解

    转自:http://flyingdutchman.iteye.com/blog/1878775#bc2337280 Hadoop深入学习:MapTask详解 博客分类: Hadoop MapTask执 ...

随机推荐

  1. 针对SYN洪水攻击的防御措施

    可以运用sysctl命令进行配置,由于本命令参数较多,这里只简单记录几个比较常用的参数: 1.tcp_max_syn_backlog 这个参数指定了后备队列可维持的TCP半开连接的数目,如果该值设定很 ...

  2. Mysql 练习 总结

    insert into Course values ('); #---------------Teacher--添加信息---- insert into Teacher values (','李成', ...

  3. sqlserver insert 存储过程

    -- 根据表中数据生成insert语句的存储过程Create Proc proc_insert (@tablename varchar(256))  as                        ...

  4. 【leetcode】Binary Tree Maximum Path Sum (medium)

    Given a binary tree, find the maximum path sum. The path may start and end at any node in the tree. ...

  5. 最喜欢的VS 键盘快捷键摘抄

    最喜欢的Visual Studio键盘快捷键(关闭)   336年最喜欢的 425年 你最喜欢的Visual Studio键盘快捷键是什么? 我总是让我的手在键盘上,远离鼠标! 一个请每回答. net ...

  6. 在CMD窗口中使用javac和java命令进行编译和执行带有包名的具有继承关系的类

    一.背景 最近在使用记事本编写带有包名并且有继承关系的java代码并运行时发现出现了很多错误,经过努力一一被解决,今天我们来看一下会遇见哪些问题,并给出解决办法. 二.测试过程 1.父类代码 pack ...

  7. [Android] 解析android framework下利用app_process来调用java写的命令及示例

    reference to :http://bbs.9ria.com/thread-253058-1-1.html 在android SDK的framework/base/cmds目录下了,有不少目录, ...

  8. Redis事件管理(二)

    Redis的定时器是自己实现的,不是很复杂.说说具体的实现吧. 定时器的存储维护采用的是普通的单向链表结构,具体节点定义为: /*时间定时器结构体*/ typedef struct aeTimeEve ...

  9. C#索引器一

    索引器允许类或者结构的实例按照与数组相同的方式进行索引取值,索引器与属性类似,不同的是索引器的访问是带参的. 索引器和数组比较: (1)索引器的索引值(Index)类型不受限制 (2)索引器允许重载 ...

  10. Loadrunner之API测试

    //API函数 web_submit_data web_custom_request   //支持https请求 web_set_sockets_option("SSL_VERSION&qu ...