To get all the posts/pages that are children of a given post/page, you can use the parameter post_parent, using the ID of the parent post.
For example, if you have a post
$wp_query->query( array ( 'post_type' => $children_post_type 'post_parent' => $postId ));
And of course, yes, performing a query will be much more efficient than performing a query + getting a field value + creating a variable + looping the results making a comparison...
EDIT: According to your comments, it seems that you're actually trying to get all those posts that have a given value in a custom field of type Post Object. This field contains a number, which is the ID of the post it relates to, so you just need to add a parameter meta_value_num in your query:
$wp_query->query( array ( 'post_type' => 'my_post_type', 'meta_key' => 'post_object_field' 'meta_value_num' => $postId ));
This will retrieve all the posts that have a custom field called
post_object_field with a value
EDIT: Try this:
$args = array( 'post_type' => 'my_post_type', 'meta_query' => array( array( 'key' => 'post_object_field', 'value' => $postId, 'compare' => '=' ) ) );