That works because you are simply matching the value in a field. The contains is used if you are checking if a value is inside of a list field, and in your example, the “my field” is not a list field in the way you are using it. Technically it is a list field with 2 items, “some” and “value”, but the way you are wanting to reference it as a whole text value of “some value”. What you are describing is simply a field that has some text in it that you want to match exactly, which is not what the contains operator is for.
[my field[some value]] is as basic a filter run as you can get and is the proper way to check if the the text inside that field is exactly what you put in the filter, but if it contains more than just that text, you would need to use the search operator, such as this:
[search:my field:literal[some value]]
This would find that exact value, even if there was other text surrounding that value.
Again, it seems like you only have that exact value in that field and you simply want to display any tiddlers where the “my field” has the exact text of “some value”, which is just your most basic filter run.