我想获取een documentdb集合中的最后一个文档。但是我有两个问题。
第一个问题是当我循环创建文档时,它没有以相同的顺序创建文档,因此数据库中的最后一个文档不是数组中的最后一个元素。我用slice()
函数修复了该问题。我取出数组的最后一个元素,并用setTimeout()
函数创建一个文档。它有效,但是有什么更好的方法吗?
第二个问题是在数据库中查询。我不想查询数据库中的所有文档。因此,我想使用LAST()
SQL函数,但它给出错误“ LAST”,这不是公认的内置函数名称。.我可以很好地使用此语句。
SELECT TOP 1 CustomerName FROM Customers
ORDER BY CustomerID DESC;
但这对查询所有文档有用吗?我的意思是,如果有10.000个或更多文档,这是一个好方法吗?或者有什么方法可以在不查询所有文档的情况下获取最后一个文档?
最佳答案
第一:实际上没有最后一个文档的概念。如果在查询中添加ORDER BY
,则可以按照第二个示例中的说明获取TOP N
。没有排序顺序,就没有“最后一个”的概念(就此而言,甚至没有“第一个”的概念-无序查询上的TOP 1
理论上可以返回任何文档-您只是略过结果集中的第一个)。
至于查询所有文档:您不是在查询所有文档。由于默认情况下,所有属性都已编入索引,因此您只是根据CustomerID
属性排序顺序获取第一个文档。数据库引擎没有理由对这种类型的查询进行收集扫描。