如何将参数传递给 CosmosAsyncContainer

How to pass parameters to CosmosAsyncContainer

我正在使用 CosmosAsyncContainer 中的 queryItems 方法,如下所示:

https://docs.microsoft.com/en-us/java/api/com.azure.cosmos.cosmosasynccontainer.queryitems?view=azure-java-stable#com-azure-cosmos-cosmosasynccontainer-(t)queryitems(java-lang-string-com-azure-cosmos-models-cosmosqueryrequestoptions-java-lang-class(t))

到目前为止,我已经能够通过将查询字符串与参数连接来执行查询,例如

String query = QUERY + "\"" + value + "\"";

我想避免这种串联并以不同的方式传递参数。也许通过改变 CosmosQueryRequestOptions, 现在我这样使用它们: CosmosQueryRequestOptions queryOptions = new CosmosQueryRequestOptions();

任何帮助将不胜感激

您可以使用 SqlQuerySpec(String queryText, List<SqlParameter> parameters) 创建参数化查询,而不是使用字符串连接创建查询。

类似于:

SqlQuerySpec spec = new SqlQuerySpec(
           "SELECT * FROM c WHERE c.id = @id",
           new SqlParameterCollection(new SqlParameter("@id", "id-value")));

然后您可以使用以下覆盖 queryItems 方法:<T>queryItems(SqlQuerySpec querySpec, CosmosQueryRequestOptions options, Class<T> classType).