This is actually a very simple operation that just involves "projection" using the positional $ operator in order to match a given condition. In the case of a "singular" match that is:
db.collection.find(
    { "data.country": "A" },
    { "data.$": 1 }
)
And that will match the first element in the array which matches the condition as given in the query.
For more than one match, you need to invoke the aggregation framework for MongoDB:
db.collection.agggregate([
    // Match documents that are possible first
    { "$match": {
        "data.country": "A"
    }},
    // Unwind the array to "de-normalize" the documents
    { "$unwind": "$data" },
    // Actually filter the now "expanded" array items
    { "$match": {
        "data.country": "A"
    }},
    // Group back together
    { "$group": {
        "_id": "$_id",
        "data": { "$push": "$data" }
    }}
])
Or with MongoDB 2.6 or greater, a little bit cleaner, or at least without the $unwind:
db.collection.aggregate({
    // Match documents that are possible first
    { "$match": {
        "data.country": "A"
    }},
    // Filter out the array in place
    { "$project": {
        "data": {
            "$setDifference": [
                {
                    "$map": {
                        "input": "$data",
                        "as": "el", 
                        "in": {
                            "$cond": [
                                { "$eq": [ "$$el.country", "A" },
                                "$$el",
                                false
                            ]
                        }
                    }
                },
                [false]
            ]
        }
    }}
])