java MongoDB查询(二)复杂查询
前言
在上篇《java MongoDB查询(一)简单查询》中我们简单了解了下查询,但是仅仅有那些查询是不够用的,还需要复杂的查询,这篇就这点进行叙述。
1、数据结构
集合:firstCollection
数据内容:
{ "_id" : ObjectId("55adba52fa1f3cf038c2aea6"), "name" : "user0", "age" : 22, "sex" : 0 }
{ "_id" : ObjectId("55adba52fa1f3cf038c2aea7"), "name" : "user1", "age" : 23, "sex" : 1 }
{ "_id" : ObjectId("55adba52fa1f3cf038c2aea8"), "name" : "user2", "age" : 24, "sex" : 0 }
{ "_id" : ObjectId("55adba52fa1f3cf038c2aea9"), "name" : "user3", "age" : 25, "sex" : 1 }
{ "_id" : ObjectId("55adba52fa1f3cf038c2aeaa"), "name" : "user4", "age" : 26, "sex" : 0 }
{ "_id" : ObjectId("55adba52fa1f3cf038c2aeab"), "name" : "user5", "age" : 27, "sex" : 1 }
2、连接数据库,拿到集合firstCollection
MongoClient mClient = new MongoClient("10.211.55.8");
DB db = mClient.getDB("test");
DBCollection collection = db.getCollection("firstCollection");
3、与查询
操作符:$and
场景:查询age大于23,并且sex为1的对象
查询条件Json内容:
{"$and":[{"age":{"$gt":23}},{"sex":1}]}
查询条件Java内容:
BasicDBObject ageObj = new BasicDBObject("age",new BasicDBObject("$gt",23));
BasicDBObject sexObj = new BasicDBObject("sex",1);
BasicDBObject andObj = new BasicDBObject("$and",Arrays.asList(ageObj,sexObj));
执行过程:
Cursor cursor = collection.find(andObj);
while(cursor.hasNext()){
DBObject obj = cursor.next();
System.out.println(obj.toString());
}
4、或查询
操作符:$or
场景:查询name为user2,或者name为user3的对象
查询条件Json内容:
{"$or":[{"name":"user2"},{"name":"user3"}]}
查询条件Java内容:
BasicDBObject user2Obj = new BasicDBObject("name","user2");
BasicDBObject user3Obj = new BasicDBObject("name","user3");
BasicDBObject orObj = new BasicDBObject("$or",Arrays.asList(user2Obj,user3Obj));
执行过程:
Cursor cursor = collection.find(orObj);
while(cursor.hasNext()){
DBObject obj = cursor.next();
System.out.println(obj.toString());
}
5、总结
通过与或的查询,我们了解了查询条件组合的方式,通过这种方式,再联系上篇《java MongoDB查询(一)简单查询》内容就可以组合成我们想要的各种结果的查询条件了
java MongoDB查询(二)复杂查询的更多相关文章
- python操作mongodb之二聚合查询
#聚合查询 from pymongo import MongoClient db = MongoClient('mongodb://10.0.0.9:27017/').aggregation_exam ...
- mongodb学习(二)分级查询数组中的值
(PS: 标题有点不妥当...) 大概是这样...数据结构如下: 需要模糊查询title的值... mongodb中操作语句: 主要是注意这里urlElements不需要加[0]...我开始的时候写成 ...
- java mongoDB 二级数组嵌套查询
场景: 会员集合下有多个会员文档,会员文档下有多个订单文档,订单买了多个商品文档 member->orders>orderItems 要求: 通过会员id和商品id验证会员是否购买过该商品 ...
- java mongodb 基础系列---查询,排序,limit,$in,$or,输出为list,创建索引,$ne 非操作
官方api教程:http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-java-driver/#getting-started ...
- java MongoDB查询(一)简单查询
前言 MongoDB的java驱动提供了查询的功能,查询条件也是bson对象,这篇就看下怎么进行简单的数据查询 1.数据结构 集合:firstCollection 数据内容: { "_id& ...
- 7. java操作MongoDB,采用_id查询
转自:https://www.2cto.com/database/201704/633262.html mongodb命令行_id查询方法 直接用ObjectId() db.getCollection ...
- MongoDB(二)-- Java API 实现增删改查
一.下载jar包 http://central.maven.org/maven2/org/mongodb/mongo-java-driver/ 二.代码实现 package com.xbq.mongo ...
- MongoDB学习笔记五—查询上
数据准备 { , "goods_name" : "KD876", "createTime" : ISODate("2016-12- ...
- accp8.0转换教材第4章MySQL高级查询(二)理解与练习
知识点:EXISTS子查询.NOT EXISTS子查询.分页查询.UNION联合查询 一.单词部分 ①exist存在②temp临时的③district区域 ④content内容⑤temporary暂时 ...
随机推荐
- HDU1003:Max Sum(简单dp)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1003 题意一目了然就不说了,算法是从左往右扫,一个暂时保存结果的值,如果区间结果<0,那么就更改左右 ...
- POJ1185:炮兵阵地(状压dp)
题目:http://poj.org/problem?id=1185 大神的题解: 方法就是用DP[i][r][p]表示第i行状态为r,第i-1行状态是p时的最多个数.而这里p受到r的限制,而第i-2行 ...
- py-统计一个矩阵中每一列的非0数的个数
1.文件类型类似于这样: 不过数据量比这个要更大一点. 2.对应上述数据的运行结果: import matplotlib.pyplot as plt with open('test.txt') as ...
- Ubuntu解压命令全览
1. Ubuntu解压命令全览.tar 解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName 注:tar是打包,不是压缩! .gz 解压1:g ...
- gcc __attribute__
GNU C 的一大特色就是__attribute__ 机制.__attribute__ 可以设置函数属性(Function Attribute ).变量属性(Variable Attribute )和 ...
- hdu2825Wireless Password
地址:http://acm.hdu.edu.cn/showproblem.php?pid=2825 题目: Wireless Password Time Limit: 2000/1000 MS (Ja ...
- Winter-2-STL-G Team Queue 解题报告及测试数据
Time Limit:3000MS Memory Limit:0KB Description Queues and Priority Queues are data structures wh ...
- SqlHelper简单实现(通过Expression和反射)10.使用方式
以下是整个SqlHelper的Demo: public Result<List<ArticleDTO>> GetIndexArticleList(int count, int ...
- cocosBuider 控件命名的坑
这几天遇到了各种坑.... 各种控件名字问题.... bool CLevelLayer::onAssignCCBMemberVariable(cocos2d::CCObject * pTarget, ...
- Scala List 用法
1.++[B] 在A元素后面追加B元素 scala> val a = List(1) a: List[Int] = List(1) scala> val b = List(2) b: ...