zoukankan      html  css  js  c++  java
  • 8. java操作mongodb——查询数据

    转自:https://www.cnblogs.com/adjk/p/6430074.html

    通过find方法查询集合中的文档信息

    --------------------------------------------------------

    find()  

    查询所有文档信息,返回FindIterable<Document>

    我们可以通过FindIterable的forEach方法取得document信息

    MongoClient mongoClient = new MongoClient();

    MongoDatabase db = mongoClient.getDatabase("test");
    MongoCollection<Document> doc = db.getCollection("text");

    FindIterable<Document> iter = doc.find();
    iter.forEach(new Block<Document>() {
      public void apply(Document _doc) {
        System.out.println(_doc.toJson());
      }
    });

    --------------------------------------------------------------------

    条件查询

    new Document( <field>, <value> )

    field为查询字段,value为查询值,也可以通过过滤器Filters,Filters提供了一系列查询条件的静态方法

    相等 — =

    FindIterable<Document> iter = doc.find(new Document("name","张三"));

    // 或者  FindIterable<Document> iter = doc.find(new Document("age",new Document("$eq",24)));

    //或者   FindIterable<Document> iter = doc.find(Filters.eq("name", "张三"));

    iter.forEach(new Block<Document>() {
      public void apply(Document _doc) {
        System.out.println(_doc.toJson());
      }
    });

    不等 — !=

    // FindIterable<Document> iter = doc.find(new Document("age",new Document("$ne",24)));
    FindIterable<Document> iter = doc.find(Filters.ne("name", "张三"));
    iter.forEach(new Block<Document>() {
      public void apply(Document _doc) {
        System.out.println(_doc.toJson());
      }
    });

    大于 — >

    FindIterable<Document> iter = doc.find(new Document("age",new Document("$gt",22)));

    //或者   FindIterable<Document> iter = doc.find(Filters.gt("age",22));

    iter.forEach(new Block<Document>() {
      public void apply(Document _doc) {
        System.out.println(_doc.toJson());
      }
    });

    大于等于 — >=

    用法同上,符号为$gte

    小于 — <

    FindIterable<Document> iter1 = doc.find(new Document("age",new Document("$lt",22)));

    //或者   FindIterable<Document> iter = doc.find(Filters.lt("age",22));
    iter1.forEach(new Block<Document>() {
      public void apply(Document _doc) {
        System.out.println(_doc.toJson());
      }
    });

    小于等于 — <=

    用法同上,符号为$lte

    且 — and

    FindIterable<Document> iter1 = doc.find(new Document("age",20).append("name", "张三"));
    //或者 FindIterable<Document> iter1 = doc.find(Filters.and(Filters.eq("name", "张三"),Filters.lt("age", 30)));
    iter1.forEach(new Block<Document>() {
      public void apply(Document _doc) {
        System.out.println(_doc.toJson());
      }
    });

    或者 — or

    List<Document> list = new ArrayList<Document>();
    list.add(new Document("name","张三"));
    list.add(new Document("age",24));
    FindIterable<Document> iter1 = doc.find(new Document("$or", list));
    // FindIterable<Document> iter1 = doc.find(Filters.and(Filters.eq("name", "张三"),Filters.lt("age", 30)));
    iter1.forEach(new Block<Document>() {
      public void apply(Document _doc) {
        System.out.println(_doc.toJson());
      }
    });

    存在 — in

    // List<String> list = new ArrayList<String>();
    // list.add("张三");
    // list.add("李四");
    // FindIterable<Document> iter = doc.find(new Document("name",new Document("$in",list)));
    FindIterable<Document> iter = doc.find(Filters.in("name", "张三","李四","王五"));
    iter.forEach(new Block<Document>() {
      public void apply(Document _doc) {
        System.out.println(_doc.toJson());
      }
    });

    不存在 — not in

    用法同上,符号为$nin

    排序 — sort

    FindIterable<Document> iter1 = doc.find().sort(new Document("age",1).append("phone", 1));

    //FindIterable<Document> iter1 = doc.find().sort(Sorts.orderBy(Sorts.ascending("age"),Sorts.descending("phone")));
    iter1.forEach(new Block<Document>() {
      public void apply(Document _doc) {
        System.out.println(_doc.toJson());
      }
    });

  • 相关阅读:
    算法导论(1)堆排序
    Opencv--HoughCircles源码剖析
    数据结构算法应用C++语言描述——(1)C++基础知识
    Java编程的23种设计模式
    团队建设
    管理方法论和角色认知
    压力测试:怎样设计全链路压力测试平台
    09-数据库优化方案(二):写入数据量增加时,如何实现分库分表
    08-数据库优化方案(一):查询请求增加时,如何做主从分离
    07-池化技术:如何减少频繁创建数据库连接的性能损耗
  • 原文地址:https://www.cnblogs.com/sharpest/p/7832771.html
Copyright © 2011-2022 走看看