mongoOperation相对于MongoRepository来说,方法更多一些,也更接近于mongo的原生态语言。它的方法包括了MongoRepository的所有方法外,还有分组查询group(),update方法,mapreduce方法以及直接操作collection的方法;好多都是方法的参数里都有query参数。
体类user如下:
public class User {
private String id;
private String firstname;
private String lastname;
private int age;
// getter and setter methods
}
接下来,我们看具体的操作代码,如下,这里假设要将user类保存到名为userprofile的数据集中。
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.context.support.GenericXmlApplicationContext;
import org.springframework.data.document.mongodb.MongoOperations;
import org.springframework.data.document.mongodb.query.Criteria;
import org.springframework.data.document.mongodb.query.Query;
import org.springframework.data.document.mongodb.query.Update;
import com.mkyong.config.SpringMongoConfig;
import com.mkyong.user.User;
public class App
{
public static void main( String[] args )
{
ApplicationContext ctx = new AnnotationConfigApplicationContext(SpringMongoConfig. class );
MongoOperations mongoOperation = (MongoOperations)ctx.getBean( " mongoTemplate " );
User user = new User( " 1001 " , " yong " , " mook kim " , 30 );
// 保存
mongoOperation.save( " userprofile " ,user);
// 查找
User savedUser = mongoOperation.findOne( " userprofile " ,
new Query(Criteria.where( " id " ).is( " 1001 " )),
User. class );
System.out.println( " savedUser : " + savedUser);
// 更新
mongoOperation.updateFirst( " userprofile " ,
new Query(Criteria.where( " firstname " ).is( " yong " )),
Update.update( " lastname " , " new lastname " ));
User updatedUser = mongoOperation.findOne( " userprofile " ,
new Query(Criteria.where( " id " ).is( " 1001 " )),
User. class );
System.out.println( " updatedUser : " + updatedUser);
// 删除
mongoOperation.remove( " userprofile " ,
new Query(Criteria.where( " id " ).is( " 1001 " )),
User. class );
// 显示当前列表
List < User > listUser =
mongoOperation.getCollection( " userprofile " , User. class );
System.out.println( " Number of user = " + listUser.size());
}
}
输出结果如下:
updatedUser : User [id = 1001 , firstname = yong, lastname = new lastname, age = 30 ]
Number of user =
Spring mongodb插入数据
下面详细讲解如何使用spring mongodb插入数据。在spring mongodb中,插入数据到
mongodb有如下几种方法:
// 将user对象保存到"user"这个collection中
mongoOperation.save(user);
// 将user对象保存到"new collection"这个collection中
mongoOperation.save( " new collection " ,user);
// 将user对象保存到"user"这个collection中
mongoOperation.insert(user);
// 将user对象保存到"new collection"这个collection中
mongoOperation.insert( " new collection " , user);
// 将user的对象列表(List)保存到"user"collection中去
mongoOperation.insertList(userInList);
// 将user的对象列表(List)保存到"new collection"collection中去
mongoOperation.insertList( " new collection " , userInList);
要注意的是,Spring mongodb中,当没有指定collection时,就会把对象保存到以对象命名的collection中。比如上例中的mongoOperation.insert(user),由于没指定collection的名称,所以会把user对象保存到user这个新建立的collection中。
另外请注意其中的save和insert的区别。它们的区别为:
1)save意思是,当记录不存在时插入,或者是当记录已存在是更新,实际上就是saveorupdate的意思。
2) insert的意思是:当记录不存在时插入,而如果记录存在时则忽略,继续插入。
下面举例子说明:
import java.util.ArrayList;
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
import org.springframework.data.document.mongodb.MongoOperations;
import org.springframework.data.document.mongodb.query.Criteria;
import org.springframework.data.document.mongodb.query.Query;
import com.mkyong.config.SpringMongoConfig;
import com.mkyong.user.User;
public class App {
public static void main(String[] args) {
ApplicationContext ctx = new AnnotationConfigApplicationContext(
SpringMongoConfig. class );
MongoOperations mongoOperation = (MongoOperations) ctx
.getBean( " mongoTemplate " );
// 新增一个user对象,并把它放到"ABC"这个collection中
System.out.println( " Case 1... " );
User userA = new User( " 1111 " , " user " , " A " , 99 );
mongoOperation.save( " ABC " , userA);
// 查找刚插入的user对象
User userA1 = mongoOperation.findOne( " ABC " ,
new Query(Criteria.where( " id " ).is( " 1111 " )), User. class );
System.out.println(userA1);
// 插入新的user,放到userB这个collection中去
System.out.println( " Case 2... " );
User userB = new User( " 2222 " , " user " , " B " , 99 );
mongoOperation.save(userB);
// 查找
User userB1 = mongoOperation.findOne(
new Query(Criteria.where( " id " ).is( " 2222 " )), User. class );
System.out.println(userB1);
// 插入对象列表,放到arraylist中
System.out.println( " Case 3... " );
User userC = new User( " 3333 " , " user " , " C " , 99 );
User userD = new User( " 4444 " , " user " , " D " , 99 );
User userE = new User( " 5555 " , " user " , " E " , 99 );
List < User > userList = new ArrayList < User > ();
userList.add(userC);
userList.add(userD);
userList.add(userE);
mongoOperation.insertList( " ABC-List " , userList);
List < User > users = mongoOperation.find( " ABC-List " , new Query(Criteria
.where( " firstname " ).is( " user " )), User. class );
for (User temp : users) {
System.out.println(temp);
}
}
}
输出结果如下:
User [id = 1111 , firstname = user, lastname = A, age = 99 ]
Case 2 ...
User [id = 2222 , firstname = user, lastname = B, age = 99 ]
Case 3 ...
User [id = 3333 , firstname = user, lastname = C, age = 99 ]
User [id = 4444 , firstname = user, lastname = D, age = 99 ]
User [id = 5555 , firstname = user, lastname = E, age = 99 ]
更新Document
在mongodb中,可以使用save,updateFirst(),updateMulti()方法来进行更新,下面
是相关的例子
public static void main(String[] args) {
ApplicationContext ctx = new AnnotationConfigApplicationContext(
SpringMongoConfig. class );
MongoOperations mongoOperation = (MongoOperations) ctx
.getBean( " mongoTemplate " );
User user = new User( " 1000 " , " user-first " , " user-last " , 17 );
System.out.println( " Case 1...by save() " );
mongoOperation.save(user);
User userPrint1 = mongoOperation.findOne( new Query(Criteria.where( " id " ).is( " 1000 " )), User. class );
System.out.println(userPrint1);
// 修改user对象的lastname
user.setLastname( " new last name " );
// 更新user对象
mongoOperation.save(user);
User userPrint2 = mongoOperation.findOne( new Query(Criteria.where( " id " )
.is( " 1000 " )), User. class );
System.out.println(userPrint2);
// Case 2 ... update firstname field, $set
System.out.println( " Case 2...by updateFirst() - $set " );
// 将id为1000的user对象的firstname属性的值更新为”new firstname”
mongoOperation.updateFirst( " user " ,
new Query(Criteria.where( " _id " ).is( " 1000 " )),
Update.update( " firstname " , " new first name " ));
User userPrint3 = mongoOperation.findOne( new Query(Criteria.where( " id " )
.is( " 1000 " )), User. class );
System.out.println(userPrint3);
// 对id为1000的user的age加上10
System.out.println( " Case 3...by updateFirst() - $inc " );
Update updateAge = new Update();
updateAge.inc( " age " , 10 );
mongoOperation.updateFirst( " user " ,
new Query(Criteria.where( " _id " ).is( " 1000 " )), updateAge);
User userPrint4 = mongoOperation.findOne( new Query(Criteria
.where( " _id " ).is( " 1000 " )), User. class );
System.out.println(userPrint4);
}
}
结果为:
User [id = 1000 , firstname = user - first, lastname = user - last, age = 17 ]
User [id = 1000 , firstname = user - first, lastname = new last name, age = 17 ]
Case 2 ...by updateFirst() - $set
User [id = 1000 , firstname = new first name, lastname = new last name, age = 17 ]
Case 3 ...by updateFirst() - $inc
User [id = 1000 , firstname = new first name, lastname = new last name, age = 27 ]
此外,还支持使用updateMulti,updateMulti是将所有的对象进行更新,比如:
new Query(Criteria.where( " firstname " ).is( " yong " )),
Update.update( " age " , 40 ));
表示将所有firstname为yong的user对象的age属性全部更新为40。
查询Document
在spring mongodb中,可以使用findOne(),find()和getCollection()去查询mongodb,常见的用法如下:
// 找到第一个id=1001的user对象
User user = mongoOperation.findOne( " test " , new Query(Criteria
.where( " id " ).is( " 1001 " )), User. class );
// 从test集合中获得所有id<=1000并且age=21的user对象
List < User > users = mongoOperation.find( " test " , new Query(Criteria
.where( " id " ).lte( " 2001 " ).and( " age " ).is( 21 )), User. class );
// 从test 集合中获得所有的user对象列表
List < User > users = mongoOperation.getCollection( " test " , User. class );
删除document
在spring mongodb中, 删除document使用remove方法,示例如下:
User user = new User( " ... " );
// 删除user集合中的user对象
mongoOperation.remove(user);
// 删除test集合下的id=2的user对象
mongoOperation.remove( " test " , new Query(Criteria
.where( " id " ).is( " 2 " )));
// 删除test集合下的,id=3的user对象,最后并且返回这个被删除的对象
User deletedUser = mongoOperation.findAndRemove( " test " ,
new Query(Criteria.where( " id " ).is( " 3 " )), User. class );
相关推荐
MongoDB 具有强大的查询和索引功能,并且支持各种语言的驱动程序,例如 Java、Python、C#等。在互联网应用和移动应用领域,MongoDB 被广泛用于处理大规模的数据和高并发的读写访问。 MongoDB 的安装与配置是 ...
在这个“MongoDB系列之二:简单操作”中,我们将深入探讨MongoDB的基本操作,包括安装、启动、数据插入、查询、更新以及删除等核心功能。 首先,MongoDB的安装通常很简单,支持多种操作系统,如Windows、Linux和...
本项目针对MongoDB进行了底层封装,旨在提供一套简洁、高效的API,使得开发人员可以更加便捷地进行数据的增删查改操作,无需直接与MongoDB的原生驱动打交道。以下是关于"java-mongodb底层封装"这一主题的详细知识点...
将一系列图片文件存储到MongoDB中 java操作mongodb存储文件
MongoClient mongoClient = MongoClients.create("mongodb://root:root@localhost:27017"); // 获取名为"mydb"的数据库 MongoDatabase database = mongoClient.getDatabase("mydb"); ``` 现在,你可以对数据库进行...
完全面向对象的mongo封装,maven工程源码,可直接install导出jar包引用,支持基本的增删改查和分页等,使用反射对javaBean实体进行映射,所有方法参数只需要传javaBean就行了,支持带密码连接,即拿即用,无需修改。
二、下载MongoDB 访问MongoDB官方网站(https://www.mongodb.com/download-center/community),选择“Community Server”(社区版)并找到适用于Windows的最新稳定版本。通常,下载的是一个名为“mongodb-win32-x86...
- **驱动程序选择**:MongoDB支持多种语言的驱动程序,如Python、Java、Node.js等,选择合适的驱动有助于简化开发。 - **设计API**:如何设计RESTful API,使应用与MongoDB交互更高效、简洁。 - **错误处理与异常...
二、Java驱动程序 Java驱动是MongoDB官方提供的一个用于Java应用的API,它允许开发者通过编写Java代码来操作MongoDB数据库。主要包含以下核心组件: 1. MongoClient:这是连接到MongoDB服务器的主入口点,用于建立...
MongoClient mongoClient = MongoClients.create("mongodb://username:password@localhost:27017"); ``` 然后,我们从`MongoClient`获取到`MongoDatabase`和`MongoCollection`对象,这代表了我们的数据库和集合。...
Java 中 MongoDB 使用环境详细配置 Java 中 MongoDB 使用环境详细配置是指在 Windows 平台(WinXP)上安装、运行、安装 Windows 服务的笔记,以作备忘。下面是一些重要的知识点: 1. MongoDB 的下载和安装 ...
MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017"); MongoDatabase database = mongoClient.getDatabase("testDB"); // ...其他数据库操作 } } ``` 以上代码展示了如何创建一个到...
MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017"); MongoDatabase database = mongoClient.getDatabase("myDatabase"); System.out.println("Connected to MongoDB!"); mongoClient...
本文主要介绍了使用java和MongoDB实现存图片和下载图片的方法,并结合实例形式详细分析了java结合MongoDB实现图片的存储和下载相关操作技巧。 Java和MongoDB简介 在本文中,我们将使用java作为开发语言,并配合...
MongoClient mongoClient = MongoClients.create("mongodb://192.168.46.195:10001"); MongoDatabase database = mongoClient.getDatabase("testDB"); MongoCollection<Document> collection = database....
【Java 操作 MongoDB 知识点详解】 MongoDB 是一个流行的开源、分布式文档数据库系统,以其灵活性、高性能和高可用性而受到欢迎。在 Java 开发环境中,可以通过 MongoDB 的 Java 驱动程序来实现对 MongoDB 数据库的...
MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017"); ``` 这里的URL是连接MongoDB服务器的基本格式,"localhost:27017"是默认的MongoDB服务地址和端口。 一旦连接建立,你可以获取...
有了配置信息后,我们可以创建`MongoClient`实例来连接MongoDB: ```java MongoClient mongoClient = MongoClients.create(settings); ``` 现在,我们可以通过`mongoClient`访问数据库和集合。例如,要访问名为`...
MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017"); ``` 2. **数据库选择**:获取或创建一个MongoDB数据库实例,例如`myDatabase`,通过`getDatabase()`方法完成。 ```java ...