查询不应该返回的结果 |文档数据库
Query returning results when it shouldn't | DocumentDB
当下面的 运行 查询时,它从集合中返回记录:
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")
}
});
"Families"有什么意义? ASFAIK 它不是数据库名称、集合名称或任何文档名称那么为什么它返回结果?
我也尝试用一些不同的词替换 "Families",但我仍然得到了结果。
你可以在这里看到代码https://docs.microsoft.com/en-us/azure/documentdb/documentdb-sql-query
DocumentDB 支持使用 SQL 语法查询,但由于它实际上是一个 NoSQL 存储,因此不存在 tables 的概念。
在 DocumentDB 上构建 SQL 查询时,FROM
子句(可选)specifies the source 可以包含集合名称和别名。
在您的示例中,Families
充当集合名称,f
充当别名。如果您正在针对单个集合创建查询(这是最常见的情况),您实际上不需要指定集合名称,您可以简单地使用对集合内容(文档)的引用,如下所示:
SELECT * FROM f WHERE f.id = "AndersenFamily"
我的观点是 Families
引用是为了让来自 SQL 场景的人可以与查询结构相关联(看起来像引用 table)。
当下面的 运行 查询时,它从集合中返回记录:
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")
}
});
"Families"有什么意义? ASFAIK 它不是数据库名称、集合名称或任何文档名称那么为什么它返回结果?
我也尝试用一些不同的词替换 "Families",但我仍然得到了结果。
你可以在这里看到代码https://docs.microsoft.com/en-us/azure/documentdb/documentdb-sql-query
DocumentDB 支持使用 SQL 语法查询,但由于它实际上是一个 NoSQL 存储,因此不存在 tables 的概念。
在 DocumentDB 上构建 SQL 查询时,FROM
子句(可选)specifies the source 可以包含集合名称和别名。
在您的示例中,Families
充当集合名称,f
充当别名。如果您正在针对单个集合创建查询(这是最常见的情况),您实际上不需要指定集合名称,您可以简单地使用对集合内容(文档)的引用,如下所示:
SELECT * FROM f WHERE f.id = "AndersenFamily"
我的观点是 Families
引用是为了让来自 SQL 场景的人可以与查询结构相关联(看起来像引用 table)。