java findandmodify_Mr · 范

MongoDB

mongoTemplate

2021-02-19

9次浏览

# 实体的创建

```java

@Document(collection = "eve_admin_search_keyword")

public class SearchKeyword {

@Transient

public static final String COLLECTION_NAME = "eve_admin_search_keyword";

@Id

private Stringid;

private Stringapp_no = Constant.APP_NO;

private String keyword; // 关键词

private int number; // 搜索量

private Date createDate; // 创建时间

private Date updateDate; // 更新时间

}

```

@Document:指定文档(表)名

@Transient:不会在文档中插入该字段

@Id:指定id字段

**注意**:不建议使用包装对象类型数据,可能在表中出现`null`字段

# 自带对象

**BasicDBObject**

类似于`Object`

示例:

```java

@RequestParam(defaultValue = "{}") String extend

BasicDBObject.parse("{}")

```

# 查询

```java

List find(Query query, Class entityClass)

List find(final Query query, Class entityClass, String collectionName)

```

根据id查询文档

```java

T findById(Object id, Class entityClass)

T findById(Object id, Class entityClass, String collectionName)

```

查询并修改

```java

T findAndModify(Query query, Update update, Class entityClass)

T findAndModify(Query query, Update update, Class entityClass, String collectionName)

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

T findAndModify(Query query, Update update, FindAndModifyOptions options, Class entityClass, String collectionName)

```

查询并删除

```java

T findAndRemove(Query query, Class entityClass)

T findAndRemove(Query query, Class entityClass, String collectionName)

```

总数统计

```java

long count(Query query, Class> entityClass)

long count(final Query query, String collectionName)

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

```

# 添加

```java

void insert(Object objectToSave)

void insert(Object objectToSave, String collectionName)

```

# 修改

```java

WriteResult upsert(Query query, Update update, Class> entityClass)

WriteResult upsert(Query query, Update update, String collectionName)

WriteResult upsert(Query query, Update update, Class> entityClass, String collectionName)

WriteResult updateFirst(Query query, Update update, Class> entityClass)

WriteResult updateFirst(final Query query, final Update update, final String collectionName)

WriteResult updateFirst(Query query, Update update, Class> entityClass, String collectionName)

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

WriteResult updateMulti(final Query query, final Update update, String collectionName)

WriteResult updateMulti(final Query query, final Update update, Class> entityClass, String collectionName)

```

# 删除

```java

WriteResult remove(Object object)

WriteResult remove(Object object, String collection)

WriteResult remove(Query query, String collectionName)

WriteResult remove(Query query, Class> entityClass)

WriteResult remove(Query query, Class> entityClass, String collectionName)

```

# 存在

```java

boolean exists(Query query, Class> entityClass)

boolean exists(Query query, String collectionName)

boolean exists(Query query, Class> entityClass, String collectionName)

boolean exists = mongoTemplate.exists(new Query(Criteria.where("enterpriseId").is(enterpriseId)), EnterpriseToken.class);

```

# Query

```java

new Query(Criteria criteria)

```

# Criteria

```java

where

and

is

ne

lt // 小于

lte // 小于等于

gt // 大于

gte // 大于等于

in

nin

mod

all

size

exists

type

not

regex

withinSphere

within

```

# findAndModify

findAndModify(query,update,options,entityClass)

StrUtil.isNotBlank(Str):判断非空,含空字符串

## currentDate

```java

update.currentDate("updateDate");

```

`$currentDate`操作符是只用在更新操作上,不可以用在`insert`操作,更新日期类型的字段时建议使用`$currentDate`操作符,因为它是直接取的数据库服务端的时间,而使用`new Date()`设置日期取的是当前服务器上的时间,容易造成误差。

```java

Query query = new Query();

query.addCriteria(where("keyword").is(keyword).and("app_no").is(Constant.APP_NO));

Update update = new Update();

update.inc("number", 1);

update.currentDate("updateDate");

update.setOnInsert("createDate", new Date());

mongoTemplate.findAndModify(query, update, FindAndModifyOptions.options().upsert(true), SearchKeyword.class);

```

## 排序查询

```java

Query query = new Query();

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

query.limit(pageSize);

List searchKeywordList = mongoTemplate.find(query, SearchKeyword.class);

```

# Criteria

多条件或

```java

Criteria c1 = null;

c1.orOperator(

where("usr.realname").regex(keyword),

where("user.info.name").regex(keyword),

where("user.weId").is(weId),

where("user.mobile").regex(keyword)

);

```

# 顺序

注意sort -> skip -> limit的顺序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值