我有这样的架构。
peopleSchema = Schema({
followerRefs: {
type: [
{ type: Schema.Types.ObjectId, ref: 'peoples'}
],
select: false
},
followRefs: {
type: [
{ type: Schema.Types.ObjectId, ref: 'peoples'}
],
select: false
}
});
每次,我只想选择一部分followerRefs或followRefs。例如,我想实现一个分页,所以我只想在followRefs中选择前20,或者在followRefs中选择前21~40。
那么,有没有办法通过选择所有列表来获取followerRefs的一部分?
似乎我没有清楚地解释我的问题。我假设数据库中的followerRefs中有超过一百万个实体,我只想得到它们中的前20个,这意味着我只想获得它们的0~19的索引。所以我不想将所有一百万个实体加载到内存中。
所以我想知道是否有任何方法可以在没有加载的情况下获得前20个实体?
答案 0 :(得分:0)
如果它只是一个名单列表,我认为你不应该通过mongoose和后端处理排序。 但这取决于数据的大小。
通过javascript(前端)我会先根据类别排序列表,然后我会对它进行排序。 使用普通的javascript排序可能很复杂,我不是它的专家,因为我使用插件。 XD
所以这里有一个链接,其中包含有关javascript排序的答案的链接。 Sorting an array of JavaScript objects
由于您询问数组的部分内容,只需使用javascript slice()函数。
var myList = ["Follower1", "Follower2", "Follower3", ...]; //pretend it goes til 20
var page1 = myList.slice(0, 19);