Nosql 在Azure Cosmos中创建和查询项目列表

Nosql 在Azure Cosmos中创建和查询项目列表,nosql,azure-cosmosdb,Nosql,Azure Cosmosdb,我正在Azure Cosmos中构建应用程序,创建查询时遇到问题。使用下面的数据集,我想创建一个查询,通过搜索所有TraitId为“Athletic”和“Slim”的字符,只查找CharacterId“Susan” 这是我的JSON数据集 { "characterId": "Bob", "traits": [ { "traitId": "Athletic", "trai

我正在Azure Cosmos中构建应用程序,创建查询时遇到问题。使用下面的数据集,我想创建一个查询,通过搜索所有TraitId为“Athletic”和“Slim”的字符,只查找CharacterId“Susan”

这是我的JSON数据集

    {
        "characterId": "Bob",
        "traits": [
            {
                "traitId": "Athletic",
                "traitId": "Overweight"
            }
        ],
    },
    {
        "characterId": "Susan",
        "traits": [
            {
                "traitId": "Athletic",
                "traitId": "Slim"
            }
        ],
    },
    {
        "characterId": "Jerry",
        "traits": [
            {
                "traitId": "Slim",
                "traitId": "Strong"
            }
        ],
    }
]
我最近遇到的是这个查询,但它充当OR语句,我想要的是and语句

从字符f中选择*,其中f.traits位于(“运动型”、“苗条型”)

非常感谢您的帮助

编辑:我找到了这个问题的答案。如果有人对此感兴趣,此查询将给出我想要的结果:

SELECT * FROM Characters f 
WHERE EXISTS (SELECT VALUE t FROM t IN f.traits WHERE t.traitId = 'Athletic')
    AND EXISTS (SELECT VALUE t FROM t IN f.traits WHERE t.traitId = 'Slim')

我的答案是使用
EXISTS
语句和搜索traits列表的
SELECT
语句。在我的程序中,我可以使用StringBuilder创建一个SQL语句,该语句将我要查找的每个特征的
和EXISTS
语句连接起来:

SELECT * FROM Characters f 
WHERE EXISTS (SELECT VALUE t FROM t IN f.traits WHERE t.traitId = 'Athletic')
    AND EXISTS (SELECT VALUE t FROM t IN f.traits WHERE t.traitId = 'Slim')

您好,感谢您的分享,您可以将您的解决方案总结为完整的答案,以结束此答案,供论坛上的任何人参考。谢谢。