CosmosDB 查询多个项目

问题描述

您好,我使用 Azure CosmosDB 数据库,我尝试查询项目中的多个数据。' Collection中是三个数组author_documents,book_documents,joining_documents。所有数据都填充在这些数组中。 集合有以下数据:

[
    {
        "author_documents": [
            {
                "id": "a1","name": "Thomas Andersen"
            },{
                "id": "a2","name": "William Wakefield"
            }
        ],"book_documents": [
            {
                "id": "b1","name": "Azure Cosmos DB 101"
            },{
                "id": "b2","name": "Azure Cosmos DB for RDBMS Users"
            },{
                "id": "b3","name": "Taking over the world one JSON doc at a time"
            },{
                "id": "b4","name": "Learn about Azure Cosmos DB"
            },{
                "id": "b5","name": "Deep dive into Azure Cosmos DB"
            }
        ],"joining_documents": [
            {
                "authorId": "a1","bookId": "b1"
            },{
                "authorId": "a2",{
                "authorId": "a1","bookId": "b2"
            },"bookId": "b3"
            }
        ],"id": "33a127b7-a0b6-4207-8092-caf15aaae820","_rid": "......","_self": ".......","_etag": "........","_attachments": ".....","_ts": .....
    },{
        "author_documents": [
            {
                "id": "a3","name": "Thomas Andersen"
            }
        ],"id": "271ffe0c-56c1-4eec-be6c-a5b1d6ff6e72","_rid": ".......","_self": ".....","_etag": "....","_attachments": "......",{
        "book_documents": [
            {
                "id": "b7","name": "Azure Cosmos DB 101"
            }
        ],"id": "c88a968e-4d4e-4a25-be6b-4661f314b7c5","_rid": "....","_self": "...","_etag": ".....","_ts": 1619172859
    },{
        "joining_documents": [
            {
                "authorId": "a3","bookId": "b7"
            }
        ],"id": "9c7279ab-9e13-4a39-b61b-a03ad2b2652a","_rid": "==","_self": "/....","_etag": ".......","_ts": .....
    }
]

使用此查询可以正常工作:

SELECT t.authorId,t.bookId,f.name FROM  a 
join f in a.author_documents 
JOIN t IN a.joining_documents  where t.bookId="b2" and f.id = t.authorId

但是有了这个查询

SELECT t.authorId,v.name FROM  a 
JOIN t IN a.joining_documents
join v in a.author_documents  where t.bookId="b7" and v.id = t.authorId

数据库中没有记录。 我对 Nosql 数据库完全陌生。 为什么我不能查询集合中的多个项目?是否可以这样做?

解决方法

容器无法在 cosmosdb 中与其他容器进行通信,正如 op 所说,他选择使用 MongoDb。