我想使用select query从azure-cosmos DB中获取100条以上的记录。
我正在编写存储过程并使用select查询来获取记录。
SELECT * FROM activities a
虽然记录超过500条,但我只获得了100条记录。 我可以使用Azure提供的设置配置获取所有记录。
我想使用查询或存储过程执行相同的操作。我怎么能这样做?
请建议需要完成的更改。
答案 0 :(得分:10)
我正在编写存储过程并使用select查询来获取记录。
SELECT * FROM activities a
虽然有超过500条记录,但我只获得了100条记录。
queryDocuments
的FeedOptions pageSize属性的默认值为100,这可能是问题的原因。请尝试将值设置为 -1 。以下存储过程在我这边工作正常,请参考它。
function getall(){
var context = getContext();
var response = context.getResponse();
var collection = context.getCollection();
var collectionLink = collection.getSelfLink();
var filterQuery = 'SELECT * FROM c';
collection.queryDocuments(collectionLink, filterQuery, {pageSize:-1 },
function(err, documents) {
response.setBody(response.getBody() + JSON.stringify(documents));
}
);
}
答案 1 :(得分:0)
如果有人点击此页面,则上述答案已过时。
@azure/cosmos
现在为感兴趣的人提供了如下选项:
const usersQuery = {
query: "SELECT * FROM c where c.userId = 'someid'" +
" order by c.userId asc, c.timestamp asc"
};
const { resources: users } = await container.items
.query(usersQuery, { maxDegreeOfParallelism: 5,maxItemCount: 10000 }).fetchNext()
参考here。