java mongodb 基础系列---查询,排序,limit,$in,$or,输出为list,创建索引,$ne 非操作
package com.infomorrow.webroot; import java.util.List; import com.mongodb.BasicDBObject;
import com.mongodb.DB;
import com.mongodb.DBCollection;
import com.mongodb.DBCursor;
import com.mongodb.DBObject;
import com.mongodb.MongoClient; public class test_mongodb {
public static void main(String args[]) throws Exception {
MongoClient mongoClient = new MongoClient( "127.0.0.1" , 27017 );//建立连接
DB get_db_credit = mongoClient.getDB("credit_2");//数据库名
DBCollection collection = get_db_credit.getCollection("report");//集合名,对应mysql中的表名
BasicDBObject filter_dbobject = new BasicDBObject(); //建立查询条件,如果还有其他条件,类似的写即可
// 如:version=3,filter_dbobject.put("version", 3),mongod区分String 和 Integer类型,所以要小心"3"!=3
filter_dbobject.put("user_id", "10065716153075"); //下面执行查询,设置limit,只要10条数据,排序(类mysql orderby) 再建一个BasicDBObject即可,-1表示倒序
DBCursor cursor = collection.find(filter_dbobject).limit(10).sort(new BasicDBObject("create_time",-1)); //把结果集输出成list类型
List<DBObject> list = cursor.toArray();
System.out.println(list.size());//list的长度
System.err.println(cursor.count());//计算结果的数量,类似于(mysql count()函数),不受limit的影响 //遍历结果集
while(cursor.hasNext()) {
System.out.println(cursor.next());
}
}
}
补充:1.关于查询:如果想要查 "a=30或a=50"这样的条件怎么办?
可以使用$in进行查询:
@Test
public void testIn(){
//a=30或者a=50
DBObject queryCondition = new BasicDBObject(); BasicDBList values = new BasicDBList();
values.add(30);
values.add(50);
queryCondition.put("a", new BasicDBObject("$in", values)); DBCursor dbCursor = coll.find(queryCondition); }
2.关于查询:如果想要查 "a>30或a<10"这样的条件怎么办?
可以使用$or进行查询:
@Test
public void testOrSingleField(){
DBObject queryCondition = new BasicDBObject();
//查询a<10 OR a>30
BasicDBList values = new BasicDBList();
values.add(new BasicDBObject("a", new BasicDBObject("$gt", 30)));
values.add(new BasicDBObject("a", new BasicDBObject("$lt", 10)));
queryCondition.put("$or", values); DBCursor dbCursor = coll.find(queryCondition); }
那么,如果想要查 "a>30或b<10"这样的条件怎么办?
只需要将上面代码改为如下,即可:
values.add(new BasicDBObject("b", new BasicDBObject("$lt", 10)));
3.如果是多值and查询只用new BasicDBobject(),然后再put即可,如下所示:
BasicDBObject basic=new BasicDBObject();
basic.put("name","amosli");
basic.put("hobby","code");
....
collection.find(basic).toArray();//将值转为list
4.创建索引
// 创建索引
BasicDBObject obj = new BasicDBObject();
obj.put("create_time", -1);
collection.ensureIndex(obj);
// 查询索引,遍历索引
List<DBObject> list = collection.getIndexInfo();
for (DBObject o : list) {
System.out.println("\t" + o);
}
5.查询非操作
查询level为INFO,但status不为"已完成"的所结果数
//not equal 非操作
BasicDBObject basicDBObject = new BasicDBObject("level","INFO");
System.out.println(collection.count(basicDBObject.append("status", new BasicDBObject("$ne", "已完成"))));
另,可参见:
1.http://blog.csdn.net/llhhyy1989/article/details/12571111
2.http://blog.csdn.net/mydeman/article/details/6652387
3.http://docs.mongodb.org/manual/reference/operator/query/ 查询命令,$ne,$in
java mongodb 基础系列---查询,排序,limit,$in,$or,输出为list,创建索引,$ne 非操作的更多相关文章
- mongodb基础系列——数据库查询数据返回前台JSP(一)
经过一段时间停顿,终于提笔来重新整理mongodb基础系列博客了. 同时也很抱歉,由于各种原因,没有及时整理出,今天做了一个demo,来演示,mongodb数据库查询的数据在JSP显示问题. 做了一个 ...
- MySQL查询优化:连接查询排序limit
MySQL查询优化:连接查询排序limit(join.order by.limit语句) 2013-02-27 个评论 收藏 我要投稿 MySQL查询优化:连接查询排序 ...
- mongodb基础系列——数据库查询数据返回前台JSP(二)
上篇博客论述了,数据库查询数据返回前台JSP.博客中主要使用Ajax调用来显示JSON串,来获取其中某一个字段,赋给界面中的某一个控件. 那这篇博客中,我们讲解,把后台List传递JSP展示. Lis ...
- Java基础系列--桶排序
原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/9045967.html 1.算法简介 桶排序可以算是最简单快速的排序算法了,只是限定条件要多 ...
- Java Se 基础系列(笔记) -- Exception && Array
Exception 1.java 异常是java提供的用于处理程序中错误(指在程序运行的过程中发生的一些异常事件)的一种机制 2.java程序的执行过程中如果发生异常事件则自动生产一个异常类对象,该对 ...
- Java Se 基础系列(笔记) -- OO
记录所学到的关于Java Se的一些基础知识 1.对象是通过“属性(成员变量)”和“方法”来分别对应事物所具有的静态属性和动态属性 2.类(Class)是对某一类事物的抽象,对象(Object)为某个 ...
- Java Se 基础系列(笔记) -- BasicDataType
java.lang.String类代表不可变的字符序列 String类常用方法:1.public char charAt(int index); -- 返回下标为index的字符 2.public i ...
- J2EE开发实战基础系列之开卷有益
2014.10.24[致歉]{抱歉,从7.4号接到朋友的请求,一直忙到现在,最近又有新的CASE要忙,很抱歉教程要延误,开课时间请大家关注Q群} 时隔七年再次接触培训有关的事情,是兴奋,更多的是恐惧, ...
- python基础系列教程——Python3.x标准模块库目录
python基础系列教程——Python3.x标准模块库目录 文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata ...
随机推荐
- 发布一个高效的JavaScript分析、压缩工具 JavaScript Analyser
发布一个高效的JavaScript分析.压缩工具 JavaScript Analyser 先发一段脚本压缩示例,展示一下JSA语法压缩和优化功能. try { //xxxx(); } catch (e ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十四)定义一个avro schema使用comsumer发送avro字符流,producer接受avro字符流并解析
参考<在Kafka中使用Avro编码消息:Consumer篇>.<在Kafka中使用Avro编码消息:Producter篇> 在了解如何avro发送到kafka,再从kafka ...
- servlet种下cookie后如何携带cookie继续往下走
事情是这样的,今天我在应用1里面手动种下了一个cookie,然后它会发接着访问应用2,因为是我手动setCookie,所以它还没来得及携带cookie继续前往下一站,于是,apple pen,炸了. ...
- 阿里云centos 6安装iRedmail过程
全新系统 yum update cd /root wget http://www.iredmail.com/iRedMail-0.8.7.tar.bz2 tar xvf iRedMail-0.8.7. ...
- 35个让人惊讶的CSS3动画效果
1. Pure CSS Coke Can 2. Colorful Clock 3. jQuery DJ Hero 4. Animated Pricing Column 5. Slick jQuery ...
- Lintcode: Add Binary
C++ class Solution { public: /** * @param a a number * @param b a number * @return the result */ str ...
- 【转】一些linux基础命令
学习Linux,其实很多基础命令很重要. 不论多么复杂的shell或者命令组合,都是一个一个的拼接组合命令拼接而成: 大号一个基本功,遇到需要的场景,信手拈来,随意组合拼接,是非常重要的. 恰好看到一 ...
- 数据对接—kettle使用之四
上一篇介绍了表输出插件,并通过实例介绍插件的简单使用,如果有这样的需求大家可以参考一下并深入研究插件的其它细节设置.这一篇我们介绍和表输出对应的插件(表输入)的使用. 表输入: 1. 从步骤插入数据: ...
- 在CentOS7(虚拟机)下通过源码安装Postgresql10以及基本配置
操作系统:CentOS7 安装文件:postgresql-10.0.tar.gz 系统环境:gcc.Python 1:源码安装 [postgres@localhost ~]# tar zxvf pos ...
- VB API判断数组为空
1. 'API判断数组为空或没有初始化 Private Declare Function SafeArrayGetDim Lib "oleaut32.dll" (ByRef saA ...