接口IMongDaoFind:

package com.net.test.mongdb.dao;

public interface IMongDaoFind {

    public void findUsers();

    public void findUserByName(String name);

    public void findUserLikeName(String name);

    public void findUserPs();

    public void findUserAndOperator();

    public void findUserOrOperator();

    public void findUserOrOperator2();
}

实现类MongDaoFindImp:

package com.net.test.mongdb.dao.imp;

import java.util.ArrayList;
import java.util.List; import javax.annotation.Resource; import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Repository; import com.net.test.mongdb.dao.IMongDaoFind;
import com.net.test.mongdb.entity.User;
import com.net.test.mongdb.entity.UserP;
import com.net.test.mongdb.entity.UserPsg; /**
* @author ***
* @Time:2017年8月4日 上午10:40:33
* @version 1.0
* Function: TODO
*/
@Repository
public class MongDaoFindImp implements IMongDaoFind{ @Resource
protected MongoTemplate mongoTemplate; /**
* @description 查询所有用户信息
*/
@Override
public void findUsers()
{
List<User> list = mongoTemplate.findAll(User.class);
for(User user : list)
{
System.out.println("name :" + user.getName() + " , age :" + user.getAge() + " , sex :" + user.getSex());
}
} /**
* @description 根据用户名,单条查询用户信息.如果有重复名称,默认查询第一条
* @param name
*/
public void findUserByName(String name)
{
Query query = Query.query(Criteria.where("name").is(name));
User user = mongoTemplate.findOne(query,User.class);
System.out.println("name :" + user.getName() + " , age :" + user.getAge() + " , sex :" + user.getSex());
} /**
* @description 模糊查询
* @param name
*/
@Override
public void findUserLikeName(String name)
{
Query query = new Query();
query.addCriteria(Criteria.where("name").regex(name)); List<User> list = mongoTemplate.find(query, User.class);
for(User user : list)
{
System.out.println("name :" + user.getName() + " , age :" + user.getAge() + " , sex :" + user.getSex());
}
} /**
* @description 表名与pojo不相同进行映射
*/
@Override
public void findUserPs()
{
List<UserP> list = mongoTemplate.findAll(UserP.class, "user");
for(UserP user : list)
{
System.out.println("name :" + user.getName() + " , age :" + user.getAge() +
" , sex :" + user.getSex() + " , hobby :" + user.getHobby());
}
} /**
* @description 测试多条件进行查询,测试and连接符
*/
@Override
public void findUserAndOperator() { Query query = new Query();
Criteria c = new Criteria();
query.addCriteria(c.andOperator(Criteria.where("name").regex("车"),
Criteria.where("age").is(18))); List<User> list = mongoTemplate.find(query, User.class);
for(User user : list)
{
//基础信息
String name = user.getName();
int age = user.getAge();
String sex = user.getSex(); //内置对象
UserPsg psg = user.getPsg(); //内置数组
ArrayList<String> listHobby = (ArrayList<String>) user.getHobby();
StringBuffer bf = new StringBuffer();
if(null != listHobby && listHobby.size() > 0)
{
for(String hobby : listHobby)
{
bf.append(hobby + ",");
}
}else
{
bf.append("");
} System.out.println(
"name : " + name +
", age : " + age +
", sex : " + sex +
", hobby : " + bf.toString() +
", UserPsg : " + psg
);
}
} /**
* @description 测试多条件进行查询,测试平行并列or
*/
@Override
public void findUserOrOperator()
{
Query query = new Query();
Criteria c = new Criteria();
query.addCriteria(c.orOperator(Criteria.where("name").regex("车"),
Criteria.where("age").is(10))); List<User> list = mongoTemplate.find(query, User.class);
for(User user : list)
{
//基础信息
String name = user.getName();
int age = user.getAge();
String sex = user.getSex(); //内置对象
UserPsg psg = user.getPsg(); //内置数组
ArrayList<String> listHobby = (ArrayList<String>) user.getHobby();
StringBuffer bf = new StringBuffer();
if(null != listHobby && listHobby.size() > 0)
{
for(String hobby : listHobby)
{
bf.append(hobby + ",");
}
}else
{
bf.append("");
} System.out.println(
"name : " + name +
", age : " + age +
", sex : " + sex +
", hobby : " + bf.toString() +
", UserPsg : " + psg
);
}
} /**
* @description 测试多条件进行查询,测试包含关系or连接符,此处的or和and有些相似
*/
@Override
public void findUserOrOperator2()
{
Query query = new Query();
query.addCriteria(Criteria.where("name").regex("车").orOperator(Criteria.where("age").is(19))); List<User> list = mongoTemplate.find(query, User.class);
for(User user : list)
{
//基础信息
String name = user.getName();
int age = user.getAge();
String sex = user.getSex(); //内置对象
UserPsg psg = user.getPsg(); //内置数组
ArrayList<String> listHobby = (ArrayList<String>) user.getHobby();
StringBuffer bf = new StringBuffer();
if(null != listHobby && listHobby.size() > 0)
{
for(String hobby : listHobby)
{
bf.append(hobby + ",");
}
}else
{
bf.append("");
} System.out.println(
"name : " + name +
", age : " + age +
", sex : " + sex +
", hobby : " + bf.toString() +
", UserPsg : " + psg
);
}
}
}

MongDB之各种查询操作的更多相关文章

  1. [C#] 进阶 - LINQ 标准查询操作概述

    LINQ 标准查询操作概述 序 “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> ...

  2. MongoDB的查询操作

    1. 前言 在这篇博文中,我们将学习如何查询mongoDB中的数据.当我们把数据存储在mongoDB以后,我们需要把数据查询出来.毕竟CRUD操作中,查询操作在我们系统中是我们应用比较频繁的操作.我们 ...

  3. Django 1.10 中文文档------3.2.2 查询操作making queries

    3.2.2 查询操作 6.15章节包含所有模型相关的API解释. 后面的内容基于如下的一个博客应用模型: from django.db import models class Blog(models. ...

  4. InfluxDB学习之InfluxDB的HTTP API查询操作

    在 InfluxDB学习 的上一篇文章:InfluxDB学习之InfluxDB的HTTP API写入操作 中,我们介绍了使用InfluxDB的HTTP API进行数据写入操作的过程,本文我们再来介绍下 ...

  5. mongDB-- 3. 查询操作

    1. 准备工作 (1)启动mongo 进入mongo安装目录的bin/ 目录 , ./mongod (2)启动mongo客户端 ./mongo (3) 查看所有库 show dbs; (4) 切换到l ...

  6. .NET LINQ基本查询操作

    获取数据源      在 LINQ 查询中,第一步是指定数据源.像在大多数编程语言中一样,在 C# 中,必须先声明变量,才能使用它.在 LINQ 查询中,最先使用 from 子句的目的是引入数据源 ( ...

  7. MongoDB各种查询操作详解

    这篇文章主要介绍了MongoDB各种查询操作详解,包括比较查询.关联查询.数组查询等,需要的朋友可以参考下   一.find操作 MongoDB中使用find来进行查询,通过指定find的第一个参数可 ...

  8. MongoDB查询操作限制返回字段的方法

    这篇文章主要介绍了MongoDB查询操作限制返回字段的方法,需要的朋友可以参考下   映射(projection )声明用来限制所有查询匹配文档的返回字段.projection以文档的形式列举结果集中 ...

  9. C#参数化执行SQL语句,防止漏洞攻击本文以MySql为例【20151108非查询操作】

    为什么要参数化执行SQL语句呢? 一个作用就是可以防止用户注入漏洞. 简单举个列子吧. 比如账号密码登入,如果不用参数, 写的简单点吧,就写从数据库查找到id和pw与用户输入一样的数据吧 sql:se ...

随机推荐

  1. Reactor Pattern and Non-blocking IO--reference

    reference from:http://www.cs.bgu.ac.il/~spl051/Personal_material/Practical_sessions/Ps_12/ps12.html ...

  2. C++中的引用和指针

    引用和指针有何区别?何时只能使用指针而不能使用引用?    引用是一个别名,不能为 NULL 值,不能被重新分配:指针是一个存放地址的变量.当需要对变量重新赋以另外的地址或赋值为 NULL 时只能使用 ...

  3. Google,真的要离我们而去吗?

    Google,真的要离我们而去吗? 好怀念,真正要解决问题,还得搜google!

  4. vuejs 生命周期 updated

    前段时间 公司领导提示出了一个需求就是 像微信朋友圈一样,刷列表 一直刷到 底部或者是半中央,然后点击返回或者是离开一下 页面,再辞进入朋友圈页面依然现实的还是之前滚动的位置. 我现在做的公司贷后系统 ...

  5. 原生css3作响应式布局

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  6. Android 使用greenDAO 3.2.2 操作外部数据库

    项目开发中有时需要用到一些写死的数据,如公司的产品信息之类的.这就需要我们先把数据库文件保存在资源文件夹下,然后当应用创建时将数据库文件拷到应用安装目录的/databases/文件夹下,然后再对数据进 ...

  7. Android自定义控件练手——简单的时钟

    首先这应该是一个老生常谈的设计了,但是毕竟身为小白的自己都没动手做过,不动手怎么提高自己呢,所以在这梅林沉船闲暇之际,我就把我的设计流程与思路记录下来.首先来看看效果图吧: 如上图就是一个简单并没有美 ...

  8. .Net创建Windows服务完成批量导出功能(错误速查)

    无法打开计算机“.”上的服务控制管理器.此操作可能需要其他特权. 无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为 ...

  9. POJ 3187 Backward Digit Sums (递推,bruteforce)

    第1行j列的一个1加到最后1行满足杨辉三角,可以先推出组合数来 然后next_permutation直接暴. #include<cstdio> #include<iostream&g ...

  10. 【BZOJ2141】排队

    点此看题面 大致题意: 给你一个序列,每次交换两个数,求每次操作后的逆序对个数. 关于另一道题目 推荐先去看一下这道题目:[洛谷3759][TJOI2017] 不勤劳的图书管理员(貌似是此题的升级版) ...