接口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. 一般处理程序ashx

    在用户列表中链接数据库 在这里Html只管做Post 请求,其他逻辑全部交给ashx 其中修改需要隐藏域 1.展现列表 public void ProcessRequest (HttpContext ...

  2. Mysql5.7.6安装和主从配置手册

    Mysql5.7.6+ 安装手册 linux server版本   1.下载 http://dev.mysql.com/downloads/mysql/#downloads  2. 检查库文件是否存在 ...

  3. linux 修改myql 编码配置等信息参考

    mysql 配置: 1:编辑配置文件: vi /etc/my.cnf 2:修改配置如下: [client] password        = 123456 port            = 330 ...

  4. CF1136D Nastya Is Buying Lunch

    思路: 1. 最终答案不超过能与Nastya“直接交换”的人数. 2. 对于排在j前面的i,如果i和i-j之间(包括j)的每个人都能“直接交换”,j才能前进一步. 实现: #include <b ...

  5. 1074 食物链 2001年NOI全国竞赛

    1074 食物链 2001年NOI全国竞赛 时间限制: 3 s 空间限制: 64000 KB 题目等级 : 钻石 Diamond         题目描述 Description 动物王国中有三类动物 ...

  6. 构建第一个spring boot2.0应用之项目启动运行的几种方式(二)

    方法一. 配置Run/Debug Configuration  选择Main Class为项目 Application启动类(入口main方法) (2).进行项目目录,即包含pom.xml的目录下,启 ...

  7. uvm_port_base——TLM1事务级建模方法(五)

    文件: src/tlm1/uvm_port_base.svh 类: uvm_port_base uvm_port_component_base派生自uvm_component,因此具有其所有特性.提供 ...

  8. HDU5152 线段树 + 数论

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5152 ,线段树区间更新 + 点更新 + 数论知识(数论是重点QAQ),好题值得一做. BestCode ...

  9. 【转载】LCT题单

    本篇博客的题单转载自FlashHu大佬的博客:LCT总结--应用篇(附题单)(LCT). 关于\(LCT\)可以查看这篇博客:\(LCT\)入门. 这里面有些题解的链接是空链接,尚未补全. 维护链信息 ...

  10. ubuntu or centos 网卡无法启动

    [root@seasoned-bro:/home/daeh0f]# /etc/init.d/network restart Restarting network (via systemctl): Jo ...