mongodb:$each和$addToSet一次添加多个值

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

你可能感兴趣的:(mongodb)