原生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...