Skip to content

CosmosDB Provider Support Any(condition) on Nested Collection by mapping to ARRAY_CONTAINS #32626

@drdamour

Description

@drdamour

i looked around for another issue on this..was pretty shocked i couldn't find it, maybe my lingo/terms are all wrong. #14762 seemed like a subcase of what i was execpting to find. #20441 is another special case...well it's Any() and i'm after Any(boolCondition)

given

public class OrderReleaseEvent
{
    
    public string Href { get; set; }
}

public class Order
{
  public string Number { get; set; }
  public ICollection<OrderReleaseEvent> OrderReleaseEvents { get; set; } = new List<OrderReleaseEvent>();
}


 var results = awai db.Orders
            .Where(
                o => o.OrderReleaseEvents.Any(
                    e => e.Href == "https://example.com/events/b8f39c16-23da-4cf7-a71d-de5c859d0484"
                )
            )
            .ToListAsync();

should match a document like this

{    
    "Number": "00700-10935701",
    "_etag": "\"0900e9f8-0000-0800-0000-657c888c0000\"",
    "OrderReleaseEvents": [
        {
            "Href": "https://example.com/events/b8f39c16-23da-4cf7-a71d-de5c859d0484",
        }
    ]
}
            

The provider should translate this query into

SELECT * FROM c
WHERE Array_contains(c.OrderReleaseEvents, {"Href" : "https://example.com/events/b8f39c16-23da-4cf7-a71d-de5c859d0484"}, true)

Metadata

Metadata

Assignees

No one assigned
    No fields configured for Feature.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions