Giriş
MongoOperations arayüzünden kalıtır. MongoOperations için şu satırı dahil ederiz.
Bu sınıfı kodla yaratmak yerine AbstractMongoConfiguration sınıfının yaratmasını kullanmak daha kolay.
MongoOperations arayüzünden kalıtır. MongoOperations için şu satırı dahil ederiz.
import org.springframework.data.mongodb.core.MongoOperations;
Bu sınıf MongoDB bağlantısı için SimpleMongoDbFactory bean'ini kullanılır.Bu sınıfı kodla yaratmak yerine AbstractMongoConfiguration sınıfının yaratmasını kullanmak daha kolay.
Bu sınıf yerine MongoRepository de kullanılabilir.
Maven
Şu satırı dahil ederiz.
İlk parametre olan MongoDbFactory arayüzü olarak, nu arayüzden kalıtan MongoDbFactorySupport, SimpleMongoClientDbFactory, SimpleMongoDbFactory kullanılır.
Örnek
Şöyle yaparız.
Şöyle yaparız. Belirtilen uri'deki mongo veritabanına bağlanır.
updateMulti() gibi çalışır. Farklı olarak nesnenin değiştirilmeden önceki halini döndürür.
Maven
Şu satırı dahil ederiz.
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.5.0.RELEASE</version>
</dependency>
constructor - MongoDbFactory + MongoConverterİlk parametre olan MongoDbFactory arayüzü olarak, nu arayüzden kalıtan MongoDbFactorySupport, SimpleMongoClientDbFactory, SimpleMongoDbFactory kullanılır.
Örnek
Şöyle yaparız.
@Bean
MongoDbFactory mongoDbFactory() throws Exception {
return new SimpleMongoDbFactory(...,...);
}
MappingMongoConverter converter = new MappingMongoConverter(mongoDbFactory(),
new MongoMappingContext());
converter.setTypeMapper(new DefaultMongoTypeMapper(null));
MongoTemplate mongoTemplate = new MongoTemplate(mongoDbFactory(), converter);
ÖrnekŞöyle yaparız. Belirtilen uri'deki mongo veritabanına bağlanır.
@Configuration
public class MongoConfig {
@Value("${spring.data.mongodb.uri}")
private String uri;
@Bean
public MongoTemplate mongoTemplate() throws Exception {
return new MongoTemplate(new SimpleMongoClientDbFactory(
new ConnectionString(this.uri)));
}
}
bulkOps metodu
Örnek - bulk insert
Şöyle yaparız
public void bulkInsertEvents(List<FoodEvent> foodEventList) {try {BulkWriteResult bulkWriteResult = mongoTemplatealo
.bulkOps(BulkOperations.BulkMode.UNORDERED, FoodEvent.class).insert(foodEventList).execute();} catch (BulkWriteException bwe) {List<Integer> failedEventIndexes = new ArrayList<>();for (BulkWriteError e : bwe.getWriteErrors()) {failedEventIndexes.add(e.getIndex());log.error("Insertion failed for index: {} with error: {}", e.getIndex(), e);}} catch (Exception e) {log.error("failed for {} events: {}", foodEventList.size(), foodEventList, e);}}
Örnek
Şöyle yaparız
BulkOperations bulkOps = mongoTemplate.bulkOps(BulkOperations.BulkMode.UNORDERED);bulkOps.upsert(upsertList);bulkOps.updateMulti(deletList);return bulkOps.execute();
find metodu
Örnek
Şöyle yaparız
@Autowired MongoTemplate template = ...; Criteria criteria = Criteria.where("mins").lte(30); Query query = new Query(); query.addCriteria(criteria); List<Recipe> recipes = template.find(query);
findAndModify metodu
Örnek
Şöyle yaparız
Şöyle yaparız.
Şöyle yaparız.
save metodu
Eğer nesnenin id alanı boş ise yaratır, doluysa günceller. Açıklaması şöyle
Foo foo = mongoTemplate.findAndModify(
query(where("_id").is(...)),
new Update().inc("seq",1),
options().returnNew(true).upsert(true),
Foo.class);
findOne metoduŞöyle yaparız.
@Override
public User findUserByUserName(String userName) {
return mongoTemplate.findOne(
new Query(Criteria.where("_id").is(userName)), User.class);
}
Örnek
Şöyle yaparız
public User getUser(String userId) {
Query query = new Query().addCriteria(Criteria.where("userId").is(userId));
return mongoTemplate.findOne(query,User.class,"user");
}
getCollection metodu
DBCollection collection = mongoTemplate.getCollection(DbCollections.news);
insert metodu
Eğer _id zaten collection'da varsa exception fırlatır.
Örnek
Şöyle yaparız
public User saveUser(User user) {
User insertedUser = mongoTemplate.insert(user,"user");
return insertedUser;
}
remove metodu - Query query + Class<?> entityClass + String collectionName
Örnek
Elimizde şöyle bir collection olsun
{
_id
company_id
job_type
name
age
...
}
Elimizde şöyle bir kod olsun
val criteria = Criteria.where("company_id").isEqualTo(companyId)
.and("job_type").isEqualTo(jobType)
val query = Query(criteria).limit(3)
Şöyle yaparız
mongoTemplate.remove(query, null, "collection_name")
Eğer nesnenin id alanı boş ise yaratır, doluysa günceller. Açıklaması şöyle
If a document does not exist with the specified _id value, the save() method performs an insert with the specified fields in the document.If a document exists with the specified _id value, the save() method performs an update, replacing all field in the existing record with the fields from the document.
Örnek
Şöyle yaparız.
upsert metodu - Query query + Object + Class<?> entityClass
@Override
public void saveUser(User user) {
mongoTemplate.save(user);
}
updateFirst metodu
Verilen Query kriterine uyan ilk nesneyi günceller.
Örnek
Şöyle yaparız
public int updateMail(User updatedUser) {
String newMail = updatedUser.getEmail();
Query query = new Query().addCriteria(Criteria.where("userId").
is(updatedUser.getUserId()));
Update update = new Update();
update.set("email",newMail);
return (int)mongoTemplate.updateFirst(query,update,User.class,"user")
.getModifiedCount();
}
updateMulti metodu
Verilen Query kriterine uyan tüm nesneleri günceller.
Bu metodun ismi saveOrUpdate() de olabilirdir. Eğer parametre olarak verilen nesne varsa günceller, yoksa yaratır.
Hiç yorum yok:
Yorum Gönder