Why this range query on nested object returns uncorrect data?

Logically that is correct. The document does have a price that is in the range (699).

To see only prices that match your range you’d need to also use “inner hits” in conjunction with nested query and mapping.