springdatamongodb_api

本文介绍MongoDB中复杂的查询与更新操作技巧,包括Criteria条件构造、排序、更新操作符如set、inc、push和pull的使用方法,以及MongoTemplate API的高级应用。

1.查询条件

Criteria

is=相等,in=在列表中,and=且,

Criteria.where("dbid").is(dbid).and("groupTypeId").in(gtIds).and("depId").in(deptRels).and("isPrivate").exists(false).and("itemTypeId").nin(hiddenIds)

nin不属于

exists 字段存在

多个critreia  or

new Criteria().orOperator(filterCriteria.toArray(new Criteria[filterCriteria.size()])

Criteria elemMatch(Criteria c)

Order 

order = new Order(orderItem.isDesc() ? Direction.DESC : Direction.ASC, orderItem.getPropertyName());

 

Sort 

Sort(Order...)

 

Query

query.addCriteria(critreia)

query.withHint

query.with(new Sort(new Order(Direction.DESC, "index")));

query.limit(limit);

 

Update 

update = new Update();

update.set(key, Object);设置属性key的值为object

update.inc(propName, Number);属性key的值加number

push(String key, Object value) ;往数组,属性值为的key添加一个元素value

update.pull(property, value);数组,属性值为的key移除一个元素value  或者Criteria criteria = new Criteria(pullProperty);criteria.is(value);根据条件移除,元素中的某个属性pullProperty条件值value

 

Update pop(String key, Position pos)数组key移除出一个位置的值(Position是first或laster)

MongoTemplate

public <T> List<T> find(Query query, Class<T> entityClass)

mongoTemplate.findAndRemove(query, Approvers.class);

mongoTemplate.findOne(Query query, Class<T> entityClass)

public <T> T findAndModify(Query query, Update update, FindAndModifyOptions options, Class<T> entityClass)

mongoTemplate.save(entity);

public WriteResult updateMulti(Query query, Update update, Class<?> entityClass)

long count(Query query, Class<?> entityClass, String collectionName)

 

 

mongodb存对象的引用

对像有这个注解属性

@DBRef

private StreamDynamic streamDynamic;

 

 

 

mongodb 操作数组private <T> void updateArrayByKey(String id, String property, String pullProperty, Object value, Class<T> entityClass, boolean delete) {

Query query = new Query();

query.addCriteria(Criteria.where("_id").is(id));

Update update = new Update();

if (delete) {

if (pullProperty == null) {

update.pull(property, value);

} else {

Criteria criteria = new Criteria(pullProperty);

criteria.is(value);

update.pull(property, criteria.getCriteriaObject());

}

} else {

update.push(property, value);

}

mongoTemplate.findAndModify(query, update, entityClass);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值