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 ...
随机推荐
- Eventlet Greenlet
Eventlet是一个用来处理和网络相关的python网络库,而且可以通过协程来实现并发,在eventlet里,把“协程”叫做greenthread. 所谓并发,就是开启了多个greenthread, ...
- (转)不看绝对后悔的Linux三剑客之sed实战精讲
不看绝对后悔的Linux三剑客之sed实战精讲 原文:http://blog.51cto.com/hujiangtao/1923718 二.Linux三剑客之sed命令精讲 1,前言 我们都知道,在L ...
- VMWare复制虚拟机系统后,模块“Disk”无法启动【转】
1.找到虚拟机所在的目录 将 .vmx文件打开 将文件vmci0.present = "TRUE" 改为 vmci0.present = "FALSE" 2.删 ...
- [原创]Nodejs 远程执行linux shell
分享几个基于nodejs远程执行linux shell的函数 参数说明: ips - 一个存有IP地址的数组对象 /** * Created by kevalin on 2015/4/27. */ v ...
- asp.net弹出窗口并返回值
a.html <form name="form1" method="post" action=""> <a href=&q ...
- 客户端设置WebService调用超时时间
刚接触WebService,对如何在客户端设置WebService调用超时时间查阅了一些资料,现总结如下: ============================================== ...
- angular 学习笔记(3) ng-repeat遍历json并且给样式
视图: <div ng-app="myapp" ng-controller="myctrl"> <ul> <li ng-repea ...
- 构建第一个Spring Boot2.0应用之项目创建(一)
1.开发环境 IDE: JAVA环境: Tomcat: 2.使用Idea生成spring boot项目 以下是使用Idea生成基本的spring boot的步骤. (1)创建工程第一步 (2)创建工 ...
- 46 Simple Python Exercises-Very simple exercises
46 Simple Python Exercises-Very simple exercises 4.Write a function that takes a character (i.e. a s ...
- 梦织未来Windows驱动编程 第06课 驱动对磁盘文件的操作
代码部分: 实现一个文件C:\\text.txt,并读取写入内容到文件,然后将文件设置为只读,并隐藏文件.代码如下: //MyCreateFile.c //2016.07.22 #include &l ...