1. 程式人生 > >mongodb:$each和$addToSet一次新增多個值

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);
}