package mongodb import ( "github.com/thoas/go-funk" "go.mongodb.org/mongo-driver/bson/primitive" "sort" ) // ConvertObjectIDsToStrings ... func ConvertObjectIDsToStrings(ids []primitive.ObjectID) []string { return funk.Map(ids, func(item primitive.ObjectID) string { return item.Hex() }).([]string) } // UniqObjectIds ... func UniqObjectIds(ids []primitive.ObjectID) []primitive.ObjectID { idStr := ConvertObjectIDsToStrings(ids) idStr = funk.UniqString(idStr) return ConvertStringsToObjectIDs(idStr) } // ConvertStringsToObjectIDs ... func ConvertStringsToObjectIDs(strValues []string) []primitive.ObjectID { return funk.Map(strValues, func(item string) primitive.ObjectID { return ConvertStringToObjectID(item) }).([]primitive.ObjectID) } // ConvertStringToObjectID ... func ConvertStringToObjectID(id string) primitive.ObjectID { objID, _ := primitive.ObjectIDFromHex(id) return objID } // SortObjectId ... func SortObjectId(ids []primitive.ObjectID) []primitive.ObjectID { sort.Slice(ids, func(i, j int) bool { return ids[i].Timestamp().Before(ids[j].Timestamp()) }) return ids }