MongDB之各种查询操作
接口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之各种查询操作的更多相关文章
- [C#] 进阶 - LINQ 标准查询操作概述
LINQ 标准查询操作概述 序 “标准查询运算符”是组成语言集成查询 (LINQ) 模式的方法.大多数这些方法都在序列上运行,其中的序列是一个对象,其类型实现了IEnumerable<T> ...
- MongoDB的查询操作
1. 前言 在这篇博文中,我们将学习如何查询mongoDB中的数据.当我们把数据存储在mongoDB以后,我们需要把数据查询出来.毕竟CRUD操作中,查询操作在我们系统中是我们应用比较频繁的操作.我们 ...
- Django 1.10 中文文档------3.2.2 查询操作making queries
3.2.2 查询操作 6.15章节包含所有模型相关的API解释. 后面的内容基于如下的一个博客应用模型: from django.db import models class Blog(models. ...
- InfluxDB学习之InfluxDB的HTTP API查询操作
在 InfluxDB学习 的上一篇文章:InfluxDB学习之InfluxDB的HTTP API写入操作 中,我们介绍了使用InfluxDB的HTTP API进行数据写入操作的过程,本文我们再来介绍下 ...
- mongDB-- 3. 查询操作
1. 准备工作 (1)启动mongo 进入mongo安装目录的bin/ 目录 , ./mongod (2)启动mongo客户端 ./mongo (3) 查看所有库 show dbs; (4) 切换到l ...
- .NET LINQ基本查询操作
获取数据源 在 LINQ 查询中,第一步是指定数据源.像在大多数编程语言中一样,在 C# 中,必须先声明变量,才能使用它.在 LINQ 查询中,最先使用 from 子句的目的是引入数据源 ( ...
- MongoDB各种查询操作详解
这篇文章主要介绍了MongoDB各种查询操作详解,包括比较查询.关联查询.数组查询等,需要的朋友可以参考下 一.find操作 MongoDB中使用find来进行查询,通过指定find的第一个参数可 ...
- MongoDB查询操作限制返回字段的方法
这篇文章主要介绍了MongoDB查询操作限制返回字段的方法,需要的朋友可以参考下 映射(projection )声明用来限制所有查询匹配文档的返回字段.projection以文档的形式列举结果集中 ...
- C#参数化执行SQL语句,防止漏洞攻击本文以MySql为例【20151108非查询操作】
为什么要参数化执行SQL语句呢? 一个作用就是可以防止用户注入漏洞. 简单举个列子吧. 比如账号密码登入,如果不用参数, 写的简单点吧,就写从数据库查找到id和pw与用户输入一样的数据吧 sql:se ...
随机推荐
- (转)不看绝对后悔的Linux三剑客之grep实战精讲
不看绝对后悔的Linux三剑客之grep实战精讲 原文:http://blog.51cto.com/hujiangtao/1923675 https://www.cnblogs.com/peida/a ...
- 高可用数据同步方案-SqlServer迁移Mysql实战
简介 随着业务量的上升,以前的架构已经不满足业务的发展,数据作为业务中最重要的一环,需要有更好的架构作为支撑.目前我司有sql server转mysql的需求,所以结合当前业务,我挑选了阿里云开源的一 ...
- JVM垃圾收集器总结
前言: 了解了JVM垃圾回收算法之后就要说说垃圾收集器了. 一.三个概念 Stop-the-World:JVM执行任何一种GC算法时是会停止应用程序的执行的,所以大多数GC优化都是从减少Stop-th ...
- Spring Cloud Ribbon负载均衡
目录 一.简介 二.客户端负载均衡 三.RestTemplate详解 GET请求 POST请求 PUT请求 DELETE请求 一.简介 Spring Cloud Ribbon是一个基于HTTP 和 ...
- win7,docker安装后,创建虚拟机分配不了ip错误 err: exit status 255
问题 win7装docker真麻烦,不如家里的win10爽.另外明明这是个很简单的操作,但是国内的解决方法有点落后,所以我写了个傻瓜式的. 有兴趣的可以直接看issue https://github. ...
- 记秋招第一个offer:去哪儿
9月17日 网申去哪儿,没有内推,因为网申了就不能内推了.难受,内推可以免简历筛选的,这下好了,可能简历直接挂了.我怎么犯了这么低级的错误?还没去搞清楚能不能内推就先傻乎乎地网申了. 9月28日 晚上 ...
- 超链接显示网站 A,访问后进入网站 B
#前端黑魔法# 出一个思考题:如何用最少的字符实现下图效果.即超链接显示网站 A,访问后进入网站 B. 当然这个是上古时代的黑魔法了,稍懂前端的都知道原理.所以这里只问最短的实现~ 一个简单的演示:( ...
- Asp.net MVC 服务端验证多语言错误
服务端验证用户提交信息时为了实现多语言使用了资源文件,如: using System.ComponentModel.DataAnnotations; public class UserModel { ...
- iOS解析新浪微博的@##以及URL链接并展示
最近在做一个跟微博相关的应用.其中涉及到了对微博中@.##以及URL链接的解析与展示.分享一下个人处理的方式,希望对需要的人有所帮助. 最终的展现效果: 首先,第一步是你得从纯文本中找到它们.毫无疑问 ...
- Android(java)学习笔记83:各种边距设置
1. 各种边距设置: (1)android:layout_paddingLeft 内边距,对谁用,指的是谁的内部内容边距 (2)android:layout_marginLeft 外边距,对谁用,指的 ...