Hi @Nikhil_Anand1 - Welcome to the community ![]()
I tried using this index definition and noticed that "minGrams" was larger than "maxGrams". Are these values you entered a typo? I.e. They are supposed to be reversed?
I ran a simple test with the same query and had the document where "bestProduct.productName":"organic" appeared first (with the highest score). Please see the query ran but with an extra projection stage to indicate scoring:
DB> db.organic.aggregate([
{
'$search': {
compound: {
should: [
{
term: {
query: 'organic',
path: [ 'bestProduct.productName' ],
score: { boost: { value: 10 } }
}
},
{
autocomplete: {
query: 'organic',
path: 'bestProduct.productName',
score: { boost: { value: 50 } }
}
}
]
}
}
},
{
'$project': { bestProduct: 1, _id: 0, score: { '$meta': 'searchScore' } }
}
Output:
[
{ bestProduct: { productName: 'organic' }, score: 9.29643726348877 },
{
bestProduct: { productName: 'Samisha organic' },
score: 8.128897666931152
},
{
bestProduct: { productName: 'childern organic' },
score: 8.128897666931152
}
]
To further assist you with this, can you provide the following information:
- Clarification on the index details regarding the
"minGrams"and"maxGrams"values you have provided as mentioned at the top of this reply. - Status of the Index being used for this query. E.g. “Active”, “Failed”:

- Output from the aggregation you have used with the addition of
{ '$project': { bestProduct: 1, _id: 0, score: { '$meta': 'searchScore' } } }at the end (as per my example above). - The index name. I noticed the query you provided did not specify the index name. Could it be that you have another index called
"default"which the query is using? - MongoDB version in use
I tried to use the index you provided and was returned with:
Your index could not be built: "mappings.fields.bestProduct.fields.productName[1]" minGrams cannot be greater than maxGrams. You are still using your last valid index.
Note specifically the following: "You are still using your last valid index."
You could be getting the results you’ve specified since the index you provided is actually not in use. I swapped the "minGrams" and "maxGrams" values you had specified in my own test above before running my $search.
Regards,
Jason