opengl – How to update constant buffer patially in OpenGLES

I am wondering what does glMapBufferRange actually do?

I am accessing my constant buffer like this way:

Uint8* builtInBuffer = (Uint8*)glMapBufferRange(buffer, 0, builtInBuffer->GetSize(), GL_MAP_WRITE_BIT | GL_MAP_FLUSH_EXPLICIT_BIT | GL_MAP_UNSYNCHRONIZED_BIT);

However, when reading builtInBuffer , all data set preiously are lost. What happend?
Does glMapBufferRange always clear all data in the range?