Random 如何以随机顺序返回viewEntryCollection

Random 如何以随机顺序返回viewEntryCollection,random,xpages,serverside-javascript,Random,Xpages,Serverside Javascript,我有以下代码 var vec:ViewEntryCollection = database.getView("view").getAllEntriesByKey("Mykey",true) 如何使用SSJS(或java)以随机顺序生成“vec”,以便每次都能获得新的顺序?在视图中使用公式为@Unique的二级排序列如何。每次都需要刷新视图,如果视图很大,性能可能不太好。在视图上设置一个公式为@Unique的辅助排序列怎么样。每次都需要刷新视图,如果视图很大,性能可能不太好。考虑了平均集合大小,

我有以下代码

var vec:ViewEntryCollection = database.getView("view").getAllEntriesByKey("Mykey",true)

如何使用SSJS(或java)以随机顺序生成“vec”,以便每次都能获得新的顺序?

在视图中使用公式为
@Unique
的二级排序列如何。每次都需要刷新视图,如果视图很大,性能可能不太好。

在视图上设置一个公式为
@Unique
的辅助排序列怎么样。每次都需要刷新视图,如果视图很大,性能可能不太好。

考虑了平均集合大小,我将循环遍历集合并将每个项添加到Java列表或JavaScript数组中

如果你去Java


如果使用JavaScript,考虑到平均集合大小,我将循环遍历集合,并将每个项添加到Java列表或JavaScript数组中

如果你去Java


如果您使用JavaScript以获得更好的性能,请不要将集合项保留在内存中。首先,从视图中创建UNID列表/数组。这将是最慢的部分。然后从列表/数组中选择任意随机数并选择所需数量的UNID。调用getDocumentByUnid或初始化(比如10)数据源。

为了获得更好的性能,不要将集合项保留在内存中。首先,从视图中创建UNID列表/数组。这将是最慢的部分。然后从列表/数组中选择任意随机数并选择所需数量的UNID。调用getDocumentByUnid或初始化(比如10个)数据源。

集合有多大?不确定,可能很大,但不太可能,可能少于200个条目。如果这样做更容易,那就足够不归还整个收藏品了。只需要以随机顺序返回10个条目如果您只需要返回所有条目的一小部分,那么我不建议对整个集合进行洗牌/重新排序。您可以简单地使用
vec.getNthEntry(Math.floor(Math.random()*vec.getCount())以获取要返回的随机项的数量。如果你想防止返回重复的条目,你当然必须跟踪已经拍摄的条目(例如,通过将拍摄的条目保存在一个简单的SSJS对象中,并使用索引作为键)。我可以问一下这有什么用例吗?是的,你可以:-)这些条目是我需要随机显示的照片集合有多大?嗯,不确定,它可能很大,但不太可能,可能少于200个条目。如果这样做更容易,那就足够不归还整个收藏品了。只需要以随机顺序返回10个条目如果您只需要返回所有条目的一小部分,那么我不建议对整个集合进行洗牌/重新排序。您可以简单地使用
vec.getNthEntry(Math.floor(Math.random()*vec.getCount())以获取要返回的随机项的数量。如果您想防止返回重复条目,您当然必须跟踪已拍摄的条目(例如,将拍摄的条目保存在一个简单的SSJS对象中,并使用索引作为键)。我可以问一下这有什么用例吗?是的,您可以:-)条目是我需要随机显示的照片,不能更改视图,抱歉,无法更改视图,抱歉