使用MongoTemplate批量更新內嵌陣列元素

2021-10-05 06:18:31 字數 1319 閱讀 9591

原生mongo從3.6以上可以使用$操作符批量修改內嵌陣列元素,以下是基於mongotemplate的封裝實現:

/**

* monogodb 更新操作符

*/@getter

@allargsconstructor

public

enum updateoperator

/** * 更新內嵌陣列指定元素

** @param query 更新的文件查詢條件

* @param arrayname 更新的內嵌陣列名

* @param updatemap 對內嵌陣列元素不同操作的更新map

* @param elefilter 更新內嵌陣列元素的過濾條件

* @return

*/public updateresult updatearrayelement

(criteria query, string arrayname, map

updatemap, criteria elefilter)

update.

put(operator.

getcode()

, elesetbson);}

basicdbobject elefilterbson =

newbasicdbobject()

; document filter = elefilter.

getcriteriaobject()

;for

(string key : filter.

keyset()

) updateoptions.

arrayfilters

(lists.

newarraylist

(elefilterbson));

return mongotemplate.

getcollection

(tabname)

.updatemany

( query.

getcriteriaobject()

, update,

updateoptions

);}

假設有以下資料,實現將"_id":"id"文件中***為1的des設為"男",age加2:

,,

,]}

public

void

demo()

mongoTemplate聚合操作

準備資料 customer 集合,資料型別如下 只是部分資料,資料量太多就不一一列出 1 通過mongotemplate.group方法 public groupbyresultsgroup string inputcollectionname,groupby groupby,classentity...

mongotemplate 動態query拼接

在用mongodb的時候進行分詞搜尋 使用ik分詞器對查詢條件進行分詞比如 男士9分休閒褲。使用mongotemplate 對分詞結果進行查詢。query query newquery criteria criteria newcriteria keywords是需要查詢的內容,對keywords進...

MongoTemplate聚合查詢

表結構 import org.springframework.data.domain.sort import org.springframework.data.domain.sort.direction import org.springframework.data.domain.sort.orde...