Azure cosmosdb 比较Cosmos DB(SQL API)中的数组属性

Azure cosmosdb 比较Cosmos DB(SQL API)中的数组属性,azure-cosmosdb,Azure Cosmosdb,假设我们有以下形式的Cosmos DB文档: { "propA": [1, 2, 3], "propB": [7, 2, 4, 2] } 是否可以编写一个查询,返回propA中至少有一个元素是propB成员的所有文档(按顺序排列,两个属性具有非空交叉点) 如果是,是否也可以使用LINQ(和.NET Cosmos客户端)?请尝试以下sql: SELECT distinct value c FROM c join d in c.propA where

假设我们有以下形式的Cosmos DB文档:

{ "propA": [1, 2, 3], 
  "propB": [7, 2, 4, 2] }
是否可以编写一个查询,返回
propA
中至少有一个元素是
propB
成员的所有文档(按顺序排列,两个属性具有非空交叉点)


如果是,是否也可以使用LINQ(和.NET Cosmos客户端)?

请尝试以下sql:

SELECT distinct value c FROM c join d in c.propA where array_contains(c.propB,d)
以下是我的结果:

LINQ:

FeedIterator<Prop> setIterator = this.container.GetItemLinqQueryable<Prop>().SelectMany(prop => prop.propA.Where(e => prop.propB.Contains(e)).Select(e => prop).Distinct()).ToFeedIterator<Prop>();
FeedIterator setIterator=this.container.GetItemLinqQueryable().SelectMany(prop=>prop.propA.Where(e=>prop.propB.Contains(e)).Select(e=>prop.Distinct()).ToFeedIterator();

希望这能对您有所帮助。

不确定查询本身,但假设您控制数据的写入,我会尝试在写入之前计算此交叉点事实并将其作为布尔值添加到文档中。查询“intersects=true”时没有问题: