MongoDB查询操作

1 数据准备

var persons = [{
 name:"jim",
 age:25,
 email:"[email protected]",
 c:89,m:96,e:87,
 country:"USA",
 books:["JS","C++","EXTJS","MONGODB"]
},
{
 name:"tom",
 age:25,
 email:"[email protected]",
 c:75,m:66,e:97,
 country:"USA",
 books:["PHP","JAVA","EXTJS","C++"]
},
{
 name:"lili",
 age:26,
 email:"[email protected]",
 c:75,m:63,e:97,
 country:"USA",
 books:["JS","JAVA","C#","MONGODB"]
},
{
 name:"zhangsan",
 age:27,
 email:"[email protected]",
 c:89,m:86,e:67,
 country:"China",
 books:["JS","JAVA","EXTJS","MONGODB"]
},
{
 name:"lisi",
 age:26,
 email:"[email protected]",
 c:53,m:96,e:83,
 country:"China",
 books:["JS","C#","PHP","MONGODB"]
},
{
 name:"wangwu",
 age:27,
 email:"[email protected]",
 c:45,m:65,e:99,
 country:"China",
 books:["JS","JAVA","C++","MONGODB"]
},
{
 name:"zhaoliu",
 age:27,
 email:"[email protected]",
 c:99,m:96,e:97,
 country:"China",
 books:["JS","JAVA","EXTJS","PHP"]
},
{
 name:"piaoyingjun",
 age:26,
 email:"[email protected]",
 c:39,m:54,e:53,
 country:"Korea",
 books:["JS","C#","EXTJS","MONGODB"]
},
{
 name:"lizhenxian",
 age:27,
 email:"[email protected]",
 c:35,m:56,e:47,
 country:"Korea",
 books:["JS","JAVA","EXTJS","MONGODB"]
},
{
 name:"lixiaoli",
 age:21,
 email:"[email protected]",
 c:36,m:86,e:32,
 country:"Korea",
 books:["JS","JAVA","PHP","MONGODB"]
},
{
 name:"zhangsuying",
 age:22,
 email:"[email protected]",
 c:45,m:63,e:77,
 country:"Korea",
 books:["JS","JAVA","C#","MONGODB"]
}]
for(var i = 0;i<persons.length;i++){
 db.persons.insert(persons[i])
}
var persons = db.persons.find({name:"jim"})

2 查询

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

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

2.2 查询条件

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

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

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

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

2.3 包含或不包含:$in或$nin

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

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

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

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

2.4 OR查询:$or

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

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

2.5 Null

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

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

查询出sex 等于 null的学生

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

2.6 正则查询

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

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

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

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

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

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

2.8 数组查询$all和index应用

查询喜欢看MONGOD和JS的学生

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

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

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

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

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

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

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

增加字段size

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

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

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

利用$gt查询

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

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

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

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

查询出最后一本书

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

2.11 文档查询:$elemMatch

为jim添加学习简历文档

var jim = [{
 school :"K",
 score:"A"
},{
 school :"L",
 score:"B"
},{
 school :"J",
 score:"A+"
}]
     db.persons.update({name:"jim"},{$set:{school:jim}})

查询出在K上过学的学生

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

2.12 Limit返回指定的数据条数

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

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

2.13 Skip返回指定数据的跨度

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

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

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

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

时间: 2024-12-16 16:01:10

MongoDB查询操作的相关文章

MongoDB查询操作限制返回字段的方法

这篇文章主要介绍了MongoDB查询操作限制返回字段的方法,需要的朋友可以参考下 映射(projection )声明用来限制所有查询匹配文档的返回字段.projection以文档的形式列举结果集中要包含或者排除的字段.可以指定要包含的字段(例如: {field:1})或者指定要排除的字段(例如:{field:0}).默认_id是包含在结果集合中的,要从结果集中排除_id字段,需要在 projection中指定排除_id字段({_id:0}).除了_id字段,不能在一个projection中联合使

MongoDB 查询操作(上)(二)

一.简介 MongoDB提供了db.collection.find() 方法是查询集合中文档并返回结果为游标的文档集合和db.collection.findOne()方法是只返回其中的第一条记录,而不是返回游标的文档集合. db.collection.find()可以实现根据条件查询和指定使用投影运算符返回的字段省略此参数返回匹配文档中的所有字段.并返回到匹配文档的游标.可以随意修改查询限制.跳跃.和排序顺序的功能. 二.db.collection.find()查询数据 语法 <span sty

Mongodb基础用法及查询操作[转载]

插入多条测试数据> for(i=1;i<=1000;i++){... db.blog.insert({"title":i,"content":"mongodb测试文章.","name":"刘"+i});                                                      ... } db.blog.list.find().limit(10).forEach(

MongoDB的查询操作

1. 前言 在这篇博文中,我们将学习如何查询mongoDB中的数据.当我们把数据存储在mongoDB以后,我们需要把数据查询出来.毕竟CRUD操作中,查询操作在我们系统中是我们应用比较频繁的操作.我们需要应对不同的业务需求,构造合适的查询条件去查询我们想要的数据.我们需要去学习mongoDB给我们提供了哪些查询相关的语法和功能.在这里,我们使用mongodb自带的mongo shell(mongo shell是一个javascript环境的mongodb客户端,支持js语法)来学习. 2. 准备

MongoDB各种查询操作详解

这篇文章主要介绍了MongoDB各种查询操作详解,包括比较查询.关联查询.数组查询等,需要的朋友可以参考下 一.find操作 MongoDB中使用find来进行查询,通过指定find的第一个参数可以实现全部和部分查询. 1.查询全部 空的查询文档{}会匹配集合的全部内容.如果不指定查询文档,默认就是{}. 2.部分查询 3.键的筛选 键的筛选是查询时只返回自己感兴趣的键值,通过指定find的第二个参数来实现.这样可以节省传输的数据量,又能节省客户端解码文档的时间和内存消耗. 查询时,数据库所关心

MongoDB源码分析——mongod数据查询操作

源码版本为MongoDB 2.6分支 Edit mongod数据查询操作 在mongod的初始化过程中说过,服务端接收到客户端消息后调用MyMessageHandler::process函数处理消息. class MyMessageHandler : public MessageHandler { public: ... virtual void process( Message& m , AbstractMessagingPort* port , LastError * le) { while

[Spring Data MongoDB]学习笔记--MongoTemplate查询操作

查询操作主要用到两个类:Query, Criteria 所有的find方法都需要一个query的object. 1. 直接通过json来查找,不过这种方式在代码中是不推荐的. BasicQuery query = new BasicQuery("{ age : { $lt : 50 }, accounts.balance : { $gt : 1000.00 }}"); List<Person> result = mongoTemplate.find(query, Perso

MongoDB 基础操作

1.创建数据库 use data_name use 数据库名 如果指定的数据库已存在则返回现有数据库,不存在则创建新数据库 创建一个名字为newdb的数据库 use newdb 查看数据库列表:show dbs 可以看到,刚刚创建的newdb不在列表中,要显示数据库,需要至少插入一个空文档,空的数据库是不显示出来的. 在 MongoDB 中默认数据库是:test. 如果您还没有创建过任何数据库,则集合/文档将存储在test数据库中. 2.删除数据库 db.dropDatabase() db.dr

MongoDB常用操作

1.MongoDB常用操作 1.1数据库的操作命令 1.创建数据库,使用命令 use 数据库名称 ,如 use sxf. *注意: 1.use 命令后跟的数据库名,如果存在就进入此数据库,如果不存在就创建,所以这种创建方式又叫隐式创建 2.使用命令use sxf创建数据库后,并没有真正生成对应的数据文件,如果此时退出,此数据库将被删除,只有在此数据库中创建集合后,才会真正生成数据文件 2. 删除当前数据库,使用命令 db.dropDatabase() 3.查看所有数据库,使用命令 show db