使用Mongoose有效地获取列表的一部分

时间:2014-11-09 15:43:52

标签: javascript node.js mongodb mongoose

我有这样的架构。

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个实体?

1 个答案:

答案 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);