org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> 3、使用mongoTemplate 经过步骤2和步骤1之后,可以直接注入mongoTemplate了,不需要我们再显示的定义bean了。 mongoTemplate; @Test public void testFindAll() { List<User> users = mongoTemplate.findAll (1, 3); Query query = new Query(); query.with(pageable); List<User> users = mongoTemplate.find (Sort.Direction.ASC, "age").and(new Sort(Sort.Direction.DESC, "date"))); List<User> users = mongoTemplate.find
二、概述 MongoTemplate是由org.springframework.data.mongodb.core包提供一个Java类。 此外,MongoTemplate是线程安全的,可以跨多个实例调用。 MongoTemplate类实现了接口MongoOperations,提供了流畅的API进行Query, Criteria, Update等基本操作,此外,也支持泛型的方法实现。 使用起来也非常方便,可直接将MongoTemplate作为类中的属性来使用。 "Jim"); mongoTemplate.save(user, "user"); 在上面的示例,save使用了update的语义,因为我们更新现存用户信息。
在具体操作 MongoDB 时可以通过 MongoTemplate 来进行操作,也可以通过 MongoRepository 来进行操作。 下面我们将介绍如何使用 MongoTemplate 来完成对 MongoDB 的 CRUD 操作。 五、使用 MongoTemplate 完成 CRUD MongoTemplate 基于 Spring 容器提供了一组对 MongoDB 操作的基本方法,只要将 MongoTemplate 1.注入 MongoTemplate 创建一个测试类,通过 @Autowired 将 MongoTemplate 进行注入,代码如下。 @Autowired private MongoTemplate mongoTemplate; 2.添加操作 在注入 MongoTemplate 后,我们即可在测试类中完成 CRUD 的操作
对象 @Autowired private MongoTemplate mongoTemplate; 5.2.4.1. Save 保存 User user = new User(); user.setName("Netkiller"); mongoTemplate.save(user, "user"); 更新数据 user = mongoTemplate.findOne(Query.query(Criteria.where("name").is("Jam")), User.class); user.setName ("Neo"); mongoTemplate.save(user, "user"); 5.2.4.2. Insert User user = new User(); user.setName("Neo"); mongoTemplate.insert(user, "user"); BSONObject
mongoTemplate; /** * 指定field查询 */ public void specialFieldQuery() { Query 上面是一个实际的case,从中可以知道一般的查询方式为: Criteria.where(xxx).is(xxx)来指定具体的查询条件 封装Query对象 new Query(criteria) 借助mongoTemplate 执行查询 mongoTemplate.findOne(query, resultType, collectionName) 其中findOne表示只获取一条满足条件的数据;find则会将所有满足条件的返回 查询总数 统计常用,这个主要利用的是mongoTemplate.count方法 /** * 查询总数 */ public void countQuery() { Query query = new Query(Criteria.where("user").is("一灰灰blog")); long cnt = mongoTemplate.count(query, COLLECTION_NAME
按ID删除 mongoTemplate.remove(Query.query( Criteria.where("_id").is("documentId")), MyDocument.class); 按其他字段删除 mongoTemplate.remove(Query.query(Criteria.where("fieldName").is("fieldValue")), MyDocument.class ); 使用了 Spring Data MongoDB 提供的 mongoTemplate 对象来执行删除操作。
,就那么几种 //删除author为yinjihuan的数据 Query query = Query.query(Criteria.where("author").is("yinjihuan")); mongoTemplate.remove 如果实体类中没配集合名词,可在删除的时候单独指定article_info query = Query.query(Criteria.where("author").is("yinjihuan")); mongoTemplate.remove (query, "article_info"); //删除集合,可传实体类,也可以传名称 mongoTemplate.dropCollection(Article.class); mongoTemplate.dropCollection ("article_info"); //删除数据库 mongoTemplate.getDb().dropDatabase(); 下面这2种适合要知道删除的数据有哪些的场景,比如记录删除的记录 //查询出符合条件的第一个结果 并将符合条件的数据删除,只会删除第一条 query = Query.query(Criteria.where("author").is("yinjihuan")); Article article = mongoTemplate.findAndRemove
今天我们学习如何使用spring-data-mongodb来对集合中的数据进行修改操作 首先准备要练习的数据2条,实体类Article的定义请参考之前的文章spring-data-mongodb之MongoTemplate 添加数据 { "_id": ObjectId("57c43caed4c63d7e39b5dc48"), "title": "MongoTemplate的基本使用", "url" ").set("visitCount", 10); mongoTemplate.updateFirst(query, update, Article.class); 修改后结果如下,我们会发现第一条数据的 title还有visit_count被修改了 { "_id": ObjectId("57c43caed4c63d7e39b5dc48"), "title": "MongoTemplate ").set("visitCount", 10); mongoTemplate.updateMulti(query, update, Article.class); 修改后结果如下,我们会发现所有数据的
来源:猿天地 链接:http://cxytiandi.com/blog/detail/1733 今天我们来学习下MongoTemplate的添加数据操作,大神请忽略。。。 for (int i = 0; i < 10; i++) { Article article = new Article(); article.setTitle("MongoTemplate Arrays.asList("java", "mongodb", "spring")); article.setVisitCount(0L); article.setAddTime(new Date()); mongoTemplate.save ArrayList<>(10); for (int i = 0; i < 10; i++) { Article article = new Article(); article.setTitle("MongoTemplate ")); article.setVisitCount(0L); article.setAddTime(new Date()); articles.add(article); } mongoTemplate.insert
) @SpringBootTest public class PersonServiceTest { @Autowired private MongoTemplate mongoTemplate mongoTemplate; /** * 自定义集合,插入文档 * @throws Exception */ @Test public void (personList, "custom_person"); } } 2.6、存储文档 MongoTemplate提供了save()方法,用于存储文档。 mongoTemplate; /** * 自定义集合,存储文档 * @throws Exception */ @Test public void @Service public class TransactionExample { @Autowired private MongoTemplate mongoTemplate;
接下来可以操作数据库了,接着上次,在测试类里写代码 @Autowired private MongoTemplate mongoTemplate; /** * 初始化文章信息 * @author yinjihuan (query, "article_info"); //删除集合,可传实体类,也可以传名称 mongoTemplate.dropCollection(Article.class); mongoTemplate.dropCollection title还有visit_count被修改了 { "_id": ObjectId("57c43caed4c63d7e39b5dc48"), "title": "MongoTemplate ").set("visitCount", 10); mongoTemplate.updateMulti(query, update, Article.class); 修改后结果如下,我们会发现所有数据的 title还有visit_count被修改了 { "_id": ObjectId("57c43caed4c63d7e39b5dc48"), "title": "MongoTemplate
root" password: "123456" database: "new_db" authentication-database: "admin" 3、配置注入的 MongoTemplate 您可以将 的WriteResultChecking属性设置为MongoTemplate以下值之一:EXCEPTION或NONE,分别用于抛出Exception或不执行任何操作。 */ @Bean MongoTemplate mongoTemplate(MongoDatabaseFactory factory, MongoConverter converter) { MongoTemplate mongoTemplate = new MongoTemplate(factory, converter); mongoTemplate.setWriteResultChecking (WriteResultChecking.EXCEPTION); return mongoTemplate; } } 4.
return mongoProperties.getDatabase(); } /** * 配置MongoClient带有mongo工厂设置 * 用于mongoTemplate * * @return MongoTemplate */ @Bean public MongoTemplate mongoTemplate() { MongoTemplate mongoTemplate = new MongoTemplate(mongoClient(), getDatabaseName()); MappingMongoConverter mongoMapping = (MappingMongoConverter) mongoTemplate.getConverter(); mongoMapping.setCustomConversions (addConverter()); mongoMapping.afterPropertiesSet(); return mongoTemplate; } }
return new SimpleMongoDbFactory(mongoClient, "db1"); } @Bean @Primary public MongoTemplate mongoTemplate MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory(), converter); return mongoTemplate return new SimpleMongoDbFactory(mongoClient, "db2); } @Bean @Qualifier("mongoTemplate2") public MongoTemplate MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory(), converter); return mongoTemplate ; } 配置完成后注入使用的地方使用Qualifier注入即可使用对应的数据源,比如: @Autowired @Qualifier("mongoTemplate2") private MongoTemplate
mongoTemplate; 在使用相应的方法执行相应的操作 this.mongoTemplate.updateFirst(query,update,Comment.class); 关于MongoDB 常用的方法 (CRUD) 插入数据 this.mongoTemplate.insert(数据,表名); this.mongoTemplate.save(数据,表名); (query, update, "Visitor"); // 更新多条 //UpdateResult visitor = this.mongoTemplate.updateMulti (query, "集合名") 删除数据库 (集合) this.mongoTemplate.dropCollection("集合名"); this.mongoTemplate.dropCollection (query, "集合名") 删除数据库 (集合) this.mongoTemplate.dropCollection("集合名"); this.mongoTemplate.dropCollection
);MongoTest one = mongoTemplate.findOne(query, MongoTest.class);分页查询Query query = Query.query(new Criteria ()).skip(0).limit(10);List<MongoTest> mongoTests = mongoTemplate.find(query, MongoTest.class);查询从第0条数据起的 5、集合操作创建集合mongoTemplate.createCollection("createCollection");删除集合mongoTemplate.dropCollection("createCollection ");判断集合是否存在boolean exists = mongoTemplate.collectionExists("createCollection");获取集合中数据总数long count = mongoTemplate.count(new Query(), "test");
mongoTemplate, String collName, List<BathUpdateOptions> options, boolean ordered) { return doBathUpdate (mongoTemplate.getCollection(collName), collName, options, ordered); } public static int bathUpdate( mongoTemplate, Class<? mongoTemplate, String collName, List<BathUpdateOptions> options) { return doBathUpdate(mongoTemplate.getCollection mongoTemplate, Class<?
String password; //...getters and setters } 保存 User user = new User("yinjihuan", "password123"); mongoTemplate.save throws Exception { return new SimpleMongoDbFactory(new Mongo(), "database"); } public @Bean MongoTemplate mongoTemplate() throws Exception { //remove _class MappingMongoConverter converter = mongoTemplate = new MongoTemplate(mongoDbFactory(), converter); return mongoTemplate; } } 如果不是 " class="org.springframework.data.mongodb.core.MongoTemplate"> <constructor-arg name="mongoDbFactory
mongoTemplate; @RequestMapping(value = "/mongo/test") public Result mongoTest(@Valid Photo photo) { mongoTemplate.save(photo); Query query = new Query(Criteria.where("photoURL ").is(photo.getPhotoURL())); Photo onePhoto = mongoTemplate.findOne(query, Photo.class); List<Photo> photos = mongoTemplate.find(query, Photo.class); List<Photo> photoAll = mongoTemplate.findAll , Photo.class); // 删除 // mongoTemplate.remove(query, Photo.class); return new
@Autowired@Qualifier("testMongoTemplate")private MongoTemplate testMongoTemplate; 多数据源就配置多个MongoTemplate =localhostspring.data.mongodb.test2MongoTemplate.port=27017spring.data.mongodb.test2MongoTemplate.database =test2spring.data.mongodb.test2MongoTemplate.username=yinjihuanspring.data.mongodb.test2MongoTemplate.password =123456 操作哪个数据库就注入哪个对象: @Autowired@Qualifier("testMongoTemplate")private MongoTemplate testMongoTemplate ; @Autowired@Qualifier("test2MongoTemplate")private MongoTemplate test2MongoTemplate;