Hi_Amos
坚持每天都在进步!!
随笔 - 224,  文章 - 2,  评论 - 192,  阅读 - 94万

 

 

官方api教程http://docs.mongodb.org/ecosystem/tutorial/getting-started-with-java-driver/#getting-started-with-java-driver

复制代码
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

 

posted on   Hi_Amos  阅读(12539)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示