Efficient search within array

In the e-commerce project I am working on, we are storing mapping of price of product for a given pincode. We are following bucket pattern to store the prices. The json structure looks like this.

{
"_id": ObjectId("6242b344ba42fdc0fab27b05"),
"prices": [
  {
    "pincode": ObjectId("6241999ad7367f6e0eeb7abc"),
    "price": 12625
  },
  {
    "pincode": ObjectId("6241999ad7367f6e0eeb7abd"),
    "price": 13625
  }
  ... // 998 more items
],
"product": ObjectId("6242b344ba42fdc0fab27b05"),
"count": 1000
}

Details is as follows.

count: represents number of elements in the array(we are fixing 1000 elements per bucket)
product: represents product id
and corresponding price of product per each pincode. Since we are following bucket pattern, for any given product there are utmost 1000 array elements and if the pincodes are exceeding 1000, then new document will be created for that given product.

If I query like this using aggregations like below

[
{
  '$match': {
    'product': new ObjectId('6242b344ba42fdc0fab27b05'),
    'prices.pincode':ObjectId('6241999ad7367f6e0eeb7ad7')
  }
}, {
  '$project': {
    'price': {
      '$filter': {
        'input': '$prices', 
        'as': 'prices', 
        'cond': {
          '$eq': [
            '$prices.pincode', new ObjectId('6241999ad7367f6e0eeb7ad7')
          ]
        }
      }
    }, 
    '_id': 0
  }
}
]

I will get the array element matching my pincode id and product id. We are using $filter in the query which will just loop the array and filter the array element matching the pincode id and corresponding price is returned.

If for a single product, then the above query is just fine, but if the product list is just huge, say we are searching via category(a given category can have big list of products) fetching price for each product and given pincode by looping through array once we get the document is very costly

My questions is, I want to fetch price for a given pincode and product is there any better approach to return the matching element from array efficiently instead of just looping($filter) through the array .

Note: compound index is created on ( product , prices.pincode )

Also if this can be modelled in any other form. I am fine with that too