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);
}