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″);

执行过程:

Cursor cursor = collection.find(orObj);

while(cursor.hasNext()){

DBObject obj = cursor.next();

System.out.println(obj.toString());

5、总结

通过与或的查询,我们了解了查询条件组合的方式,通过这种方式,再联系上篇《java MongoDB查询(一)简单查询》内容就可以组合成我们想要的各种结果的查询条件了

Original: https://www.cnblogs.com/luoaz/p/4692716.html
Author: 小爱博客
Title: java MongoDB查询(二)复杂查询

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/580240/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 干了3年程序员,我开窍了

    “当时每酣醉,不觉行路难”。 每每有人问我: 程序员工作三年,要大致学习到什么程度才算合格? 这时候,我感觉很难给出一个绝对正确的回答。 我能做的就是,如实…

    Java 2023年6月7日
    091
  • javaweb学习

    了解HTTP posted @2022-03-24 21:19 HelloHui 阅读(8 ) 评论() 编辑 Original: https://www.cnblogs.com/…

    Java 2023年6月9日
    092
  • 浅谈kali : arpspoof工具原理

    介绍 arpspoof是一个通过ARP协议伪造数据包实现中间人攻击的kali工具。 中间人攻击虽然古老,但仍处于受到黑客攻击的危险中,可能会严重导致危害服务器和用户。仍然有很多变种…

    Java 2023年6月7日
    083
  • Springboot2整合ehcache缓存笔记整理

    参考Springboot整合ehcache缓存 EhCache是一个比较成熟的 Java缓存框架,最早从 hibernate发展而来, 是进程中的缓存系统,它提供了用内存,磁盘文件…

    Java 2023年5月30日
    0105
  • 刘亦菲生日当天,引发了我对正则的思考

    前两天从网上采集到一条短视频数据(刷短视频),发现六公主连排5部刘亦菲主演的电影!甚是震惊,太有牌面了,看了一下日子是8月25号,嗷,原来当天是刘亦菲的生日。巧了,正好也是我家柴犬…

    Java 2023年6月14日
    094
  • JavaScript详解

    一、快速入门 1.JavaScript的两种引入方式 方式一:直接在html里面写 目的:实现简单的弹窗 点击查看代码 <!DOCTYPE html> <html…

    Java 2023年6月13日
    080
  • 看我如何用多线程,帮助运营小姐姐解决数据校对系统变慢!

    摘要:找到系统性能瓶颈所在,找出在逻辑上不相干,并且没有先后顺序的业务逻辑,将其放到不同的线程中执行,能够大大提供系统的性能。 最近不少运营同事找到我说:咱们的数据校对系统越来越慢…

    Java 2023年5月30日
    0109
  • Day16异常1

    package com.exception.demo01;public class demo01 { public static void main(String[] args) …

    Java 2023年6月5日
    082
  • Android Jetpack Navigation基本使用

    Android Jetpack Navigation基本使用 本篇主要介绍一下 Android Jetpack 组件 Navigation 导航组件的 基本使用 当看到 Navig…

    Java 2023年6月9日
    0108
  • 云图说丨华为云代码托管服务分支合并大作战

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Java 2023年6月15日
    077
  • MybatisPlus核心功能——实现CRUD增删改查操作 (包含条件构造器)

    CRUD 官方文档:https://baomidou.com/(建议多看看官方文档,每种功能里面都有讲解)【本文章使用的mybatisplus版本为3.5.2】 条件构造器 一般都…

    Java 2023年6月14日
    085
  • 老生常谈系列之Aop–Spring Aop源码解析(一)

    老生常谈系列之Aop–Spring Aop源码解析(一) 前言 上一篇文章老生常谈系列之Aop–Spring Aop原理浅析大概阐述了动态代理的相关知识,并…

    Java 2023年6月8日
    097
  • OrderHive 平台获取签名

    OrderHive平台对接 获取签名 测试获取签名后添加订阅 import lombok.AllArgsConstructor; import lombok.Data; impor…

    Java 2023年6月8日
    087
  • SpringBoot日志框架

    日志门面与具体实现 slf4j(http://www.slf4j.org/)、log4j、logback是同一个人开发的 log4j2是apache开发的,只是借了log4j的名字…

    Java 2023年5月30日
    075
  • SpringMVC工作流程

    SpringMVC 1、MVC Model(模型)+View(视图)+Controller(控制器),通过将业务逻辑、数据、显示分离来组织代码。 Service层(处理业务)、Da…

    Java 2023年6月5日
    0107
  • Java 安全密码学

    安全密码学,主要研究的是编制密码和破译密码。 安全密码学的发展历史分为: 古典密码学 ——> 近代密码学 ——> 现代密码学 一、古典密码学 核心: 替换法加密、移位法…

    Java 2023年5月29日
    091
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球