Need Help with MongoDB Query on Nested Array Fields

I'm facing issues while querying a MongoDB collection with documents containing nested array fields. Each document represents a product and includes an array called add_ons containing additional product information.

Here's an example of the document structure in Mongo:

I want to query documents where the productName matches a given input, the add_ons array contains an object with a specific addon_name, and the storeid matches a certain value.

Here's the code I'm currently using:

{
  "parent": {
    "$regex": "{{ textInput9.value }}",
    "$options": "i"
  },
  "add_ons.addon_name": {
    "$regex": "^{{ select2.selectedItem.addon_name }}$",
    "$options": "i"
  },
  "storeid": "{{ storeIDs.value }}"
}

Will appreciate your feedback.

Just figured it out. I changed add $elemMatch and it somehow did the trick

  1. "productName": { "$regex": "{{ textInput9.value }}", "$options": "i" } filters documents where the productName matches the provided text input.
  2. "add_ons": { "$elemMatch": { ... } } is used to match documents where at least one item in the add_ons array matches the specified conditions within the nested $elemMatch object.
  3. "addon_name": { "$regex": "^{{ select2.selectedItem.addon_name }}$", "$options": "i" } filters the add_ons array elements to find those where the addon_name matches the selected addon name.
  4. "storeid": "{{ storeIDs.value }}" filters based on the specified storeid.
{
  "productName": {
    "$regex": "{{ textInput9.value }}",
    "$options": "i"
  },
  "add_ons": {
    "$elemMatch": {
      "addon_name": {
        "$regex": "^{{ select2.selectedItem.addon_name }}$",
        "$options": "i"
      }
    }
  },
  "storeid": "{{ storeIDs.value }}"
}
1 Like