1.1 查询出所有数据的指定键(name ,age ,country)

db.persons.find({},{name:1,age:1,country:1,_id:0})

2.查询条件

2.查询条件

2.1查询出年龄在25到27岁之间的学生

db.persons.find({age: {$gte:25,$lte:27},{_id:0,age:1})

2.2查询出所有不是韩国籍的学生的数学成绩

db.persons.find({country:{$ne:”Korea”}},{_id:0,m:1})

3.包含或不包含

$in或$nin

2.3查询国籍是中国或美国的学生信息

db.persons.find({country:{$in:[“USA”,“China”]}})

2.4查询国籍不是中国或美国的学生信息

db.persons.find({country:{$nin:[“USA”,“China”]}})

4.OR查询

$or

2.4查询语文成绩大于85或者英语大于90的学生信息

db.persons.find({$or:[{c:{$gte:85}},{e:{$gte:90}}]},{_id:0,c:1,e:1})

5.Null

把中国国籍的学生上增加新的键sex

db.person.update({country:”China”},{$set:{sex:”m”}},false,true)

2.5查询出sex 等于 null的学生

db.persons.find({sex:{$in:[null]}},{country:1})

6.正则查询

2.6查询出名字中存在”li”的学生的信息

db.persons.find({name:/li/i},{_id:0,name:1})

7.$not的使用

$not可以用到任何地方进行取反操作

2.7查询出名字中不存在”li”的学生的信息

db.persons.find({name:{$not:/li/i}},{_id:0,name:1})

$not和$nin的区别是$not可以用在任何地方儿$nin是用到集合上的

8.数组查询$all和index应用

2.8查询喜欢看MONGOD和JS的学生

db.persons.find({books:{$all:[“MONGOBD”,”JS”]}},{books:1,_id:0})

2.9查询第二本书是JAVA的学习信息

db.persons.find({“books.1”:”JAVA”})

9.查询指定长度数组$size它不能与比较查询符一起使用(这是弊端)

2.8查询出喜欢的书籍数量是4本的学生

db.persons.find({books:{$size:4}},{_id:0,books:1})

2.9查询出喜欢的书籍数量大于3本的学生

1.增加字段size

db.persons.update({},{$set:{size:4}},false,true)

2.改变书籍的更新方式,每次增加书籍的时候size增加1

db.persons.update({查询器},{$push:{books:”ORACLE”},$inc:{size:1}})

3.利用$gt查询

db.persons.find({size:{$gt:3}})

2.10利用shell查询出Jim喜欢看的书的数量

var persons = db.persons.find({name:"jim"})

while(persons.hasNext()){

obj = persons.next();

print(obj.books.length)

}

课间小结

1.mongodb 是NOSQL数据库但是他在文档查询上还是很强大的

2.查询符基本是用到花括号里面的更新符基本是在外面

3.shell是个彻彻底底的JS引擎,但是一些特殊的操作要靠他的

各个驱动包来完成(JAVA,NODE.JS)

10.$slice操作符返回文档中指定数组的内部值

2.11查询出Jim书架中第2~4本书

db.persons.find({name:"jim"},{books:{"$slice":[1,3]}})

2.12查询出最后一本书

db.persons.find({name:"jim"},{books:{"$slice":-1},_id:0,name:1})

11.文档查询

为jim添加学习简历文档 jim.json

2.13查询出在K上过学的学生

1. 这个我们用绝对匹配可以完成,但是有些问题(找找问题?顺序?总要带着score?)

db.persons.find({school:{school:"K",score:"A"}},{_id:0,school:1})

2.为了解决顺序的问题我可以用对象”.”的方式定位

db.persons.find({"school.score":"A","school.school":"K"},{_id:0,school:1})

3.这样也问题看例子:

db.persons.find({"school.score":"A","school.school":”J”},{_id:0,school:1})

同样能查出刚才那条数据,原因是score和school会去其他对象对比

4.正确做法单条条件组查询$elemMatch

db.persons.find({school:{$elemMatch:{school:"K",score:"A"}}})

12.$where

12.查询年龄大于22岁,喜欢看C++书,在K学校上过学的学生信息

复杂的查询我们就可以用$where因为他是万能

但是我们要尽量避免少使用它因为他会有性能的代价

db.persons.find({"$where":function(){

var books = this.books;

var school = this.school;

if(this.age > 22){
var php = null;

for ( var i = 0; i < books.length; i++) {
if(books[i] == "C++"){
php = books[i];

if(school){
for (var j = 0; j < school.length; j++) {

if(school[j].school == "K"){

return true;
}
}
break;
}
}

}
}})

二、分页和排序

1.Limit返回指定的数据条数

1.1查询出persons文档中前5条数据

db.persons.find({},{_id:0,name:1}).limit(5)

2.Skip返回指定数据的跨度

2.1查询出persons文档中5~10条的数据

db.persons.find({},{_id:0,name:1}).limit(5).skip(5)

3.Sort返回按照年龄排序的数据[1,-1]

db.persons.find({},{_id:0,name:1,age:1}).sort({age:1})

注意:mongodb的key可以存不同类型的数据排序就也有优先级

最小值

null

数字

字符串

对象/文档

数组

二进制

对象ID

布尔

日期

时间戳à正则 à最大值

4.Limit和Skip完成分页

4.1三条数据位一页进行分页

第一页àdb.persons.find({},{_id:0,name:1}).limit(3).skip(0)

第二页àdb.persons.find({},{_id:0,name:1}).limit(3).skip(3)

4.2skip有性能问题,没有特殊情况下我们也可以换个思路

对文档进行重新解构设计

每次查询操作的时候前后台传值全要把上次的最后一个文档的日期保存下来

db.persons.find({date:{$gt:日期数值}}).limit(3)

个人建议à应该把软件的中点放到便捷和精确查询上而不是分页的性能上

因为用户最多不会翻查过2页的

三、游标

利用游标遍历查询数据

var persons = db.persons.find();

while(persons.hasNext()){

obj = persons.next();

print(obj.name)

}

2.游标几个销毁条件

1.客户端发来信息叫他销毁

2.游标迭代完毕

3.默认游标超过10分钟没用也会别清除

3.查询快照

快照后就会针对不变的集合进行游标运动了,看看使用方法.

db.persons.find({$query:{name:”Jim”},$snapshot:true})

高级查询选项

$query

$orderby

$maxsan:integer最多扫描的文档数

$min:doc 查询开始

$max:doc 查询结束

$hint:doc 使用哪个索引

$explain:boolean 统计

$snapshot:boolean一致快照

Mongodb 条件查询的更多相关文章

  1. Mongodb条件查询Query的用法

    Query.All("name", "a", "b");//通过多个元素来匹配数组Query.And(Query.EQ("name ...

  2. MongoDB条件查询

    1.查询集合中的所有记录 db.users.find() { "_id" : ObjectId("528b1173613e3289197a6486"), &qu ...

  3. pymongo增删查改以及条件查询

    ---恢复内容开始--- 下载Pymongo pip install pymongo pip install pymongo==x.x.x指定下载版本 连接数据库 from pymongo impor ...

  4. MongoDB 组合多个条件查询($and、$in、$gte、$lte)

    一,问题描述 数据格式: id, timeStamp,count 条件1:查询 某个时间段 内的数据: timeStamp BETWEEN startTime AND endTime.比如 timeS ...

  5. MongoDB入门---文档查询操作之条件查询&and查询&or查询

    经过前几天的学习之路,今天终于到了重头戏了.那就是文档查询操作.话不多说哈,直接看下语法: db.collection.find(query, projection) query :可选,使用查询操作 ...

  6. mongodb多个条件查询in,日期查询,嵌套查询,统计集合总数等常用实例

    1. 多个条件查询in in db.inventory.find( { qty: { $in: [ 5, 15 ] } } ) 2. 日期查询 db.books.find({}) 查询时间大于6-,结 ...

  7. java 实现mongoDB 增加,删除,修改,查看,多条件查询,聚合查询,分组查询(史上最全)

    首先idea创建一手springboot项目 引入如下依赖 <dependency> <groupId>org.mongodb</groupId> <arti ...

  8. mongodb根据字符长度作为条件查询

    { $where:"this.XXX.length==2" } 用$where条件查询,等号要用==.虽说$where查询可能效率不是很好,这只是我能想到的,有更好的方法欢迎指教

  9. TODO:MongoDB的查询更新删除总结

    TODO:MongoDB的查询更新删除总结 常用查询,条件操作符查询,< .<=.>.>=.!= 对应 MongoDB的查询操作符是$lt.$lte.$gt.$gte.$ne ...

随机推荐

  1. 【转】[Algorithm]01分数规划

    因为搜索关于CFRound277.5E题的题解时发现了这篇文章,很多地方都有值得借鉴的东西,因此转了过来 原文:http://www.cnblogs.com/perseawe/archive/2012 ...

  2. Http 辅助类

    using System; using System.Drawing; using System.IO; using System.Net; using System.Net.Cache; using ...

  3. 秒味课堂Angular js笔记------Angular js中的工具方法

    Angular js中的工具方法 angular.isArray angular.isDate angular.isDefined angular.isUndefined angular.isFunc ...

  4. 如何在github上传自己的项目

    1.首先在github创建自己的账号. 2.下载github for windows 客户端 (备注:这里我的电脑是windows系统的) ,不要下载错了,网上下载的应该是这样的安装程序 3.安装gi ...

  5. django安装

    见 http://jingyan.baidu.com/article/466506580e7d29f549e5f8b6.html 下载安装python下载解压django cmd进入django目录, ...

  6. oracle PL/SQL程序设计

    declare 说明部分    (变量说明,光标申明,例外说明 ] begin 语句序列   (DML语句]… exception 例外处理语句 End; /

  7. yum 安装 kvm

    KVM是什么? for Kernel-based Virtual Machine 安装环境Centos 6.5 mini x64  禁用selinux, 禁用防火墙 安装过程: 1. 查看我们的电脑是 ...

  8. Spring4.0学习笔记(4) —— 使用外部属性文件

    1.配置xml文件 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="htt ...

  9. phplib template说明

    phplib template phplib有五大功能:将数据库驱动和对数据库操作完全分离:支持session:权限许可:模板:购物 车 说明:1.第一个简单的模板页first.html模板中的{ma ...

  10. 如何用PowerPoint制作闪烁的星星

    在PPT中,PPT动画说是幻灯片PPT中的精华是当之无愧的!ppt文件有了动画,犹如插上翅膀的鸟,让PPT的色彩衍生出了更多的特色.只要你的ppt动画效果制作的对,你的幻灯片将明显与众不同,观众也更容 ...