mongodb:$each和$addToSet一次新增多個值
阿新 • • 發佈:2019-01-03
現在有個需求是管理員可以建立很多使用者組,管理員可以將自己的客戶批量移動到某個或多個組內進行管理.關聯關係體現在每個客戶資訊內的gruoIDs鍵上,維護一個數組儲存所屬組的ID
1.批量將多使用者移動到多個組內:
db.applyUsers.update({"_id":"123"},{"addToSet":{"groupIDs":{"$each":["id1","id2","id3"]}}})
如果不使用$each會將移動後的陣列這個整體作為groupIDs的一個元素
以下是使用spring-mongotemplate實現上述過程的程式碼,需要注意低版本的spring-mongodb以及mongodb可能不支援
/** * 批量更新使用者資訊組資訊 * @param userIds * @param groupIDs */ public void batchUpdateUser(Object[] userIds,Object[] groupIDs) { Criteria c = Criteria.where("_id").in(userIds); Update update = new Update(); Update.AddToSetBuilder ab = update.new AddToSetBuilder("groupIDs"); update = ab.each(groupIDs); mongoTemplate.updateMulti(new Query(c),update,SystemContent.COLLECTION_NAME_APPLYUSER); }