现在有个需求是管理员可以建立很多用户组,管理员可以将自己的客户批量移动到某个或多个组内进行管理.关联关系体现在每个客户信息内的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);
}