查询返回结果时不应该| DocumentDB

时间:2017-03-16 12:22:03

标签: c# .net azure azure-cosmosdb

在查询运行时,它会从集合中返回记录:

SELECT * 
FROM Families f 
WHERE f.id = "AndersenFamily"

我也在C#中尝试了同样的结果:

query = client.CreateDocumentQuery<Family>(collectionLink, new SqlQuerySpec
            {
                QueryText = "SELECT * FROM Families f WHERE (f.id = @name)",
                Parameters = new SqlParameterCollection()  {
                          new SqlParameter("@name", "AndersenFamily")
                     }
            });

“家庭”有什么意义? ASFAIK它不是数据库名称,集合名称或任何文档名称,那么它返回结果的原因是什么?

我也尝试用不同的词取代“家庭”,我仍然得到了结果。

您可以在此处查看代码https://docs.microsoft.com/en-us/azure/documentdb/documentdb-sql-query

1 个答案:

答案 0 :(得分:1)

DocumentDB支持使用SQL语法进行查询,但由于它实际上是NoSQL存储,因此表的概念不存在。

在DocumentDB上构造SQL查询时,FROM子句(可选)specifies the source可以包含集合名称和别名。

对于您的示例,Families充当集合名称,f充当别名。如果要针对单个集合创建查询(这是最常见的情况),您不需要指定集合名称,您可以简单地使用对集合内容(文档)的引用,如下所示: / p>

SELECT * FROM f WHERE f.id = "AndersenFamily"

我的观点是Families引用是因为来自SQL场景的人可以与查询结构相关(看起来像引用表)。