如何在猫鼬中使用.slice

Gor*_*ran 5 mongoose mongodb node.js

我的应用程式中有这个

...
Score.find({ match: {$in: ids}} )
     .sort([[score_sort, 'descending']])
     .slice([skip, limit])
     .exec(function(err, scores) {
    if (err || !scores) {
        throw err;
    } else {
        // do something cool
    }
});
Run Code Online (Sandbox Code Playgroud)

但是使用切片操作时出现错误,错误是:

Error: slice() must be used after where() when called with these arguments
Run Code Online (Sandbox Code Playgroud)

我试图用.where替换.find,但是我仍然遇到相同的错误。有人知道如何解决这个问题吗?

dyl*_*nts 7

slice()需要path指定的,可以在较早的where()调用中或在slice()调用本身中设置。 从文档

query.slice('comments', 5)
// or...
query.where('comments').slice(5)
Run Code Online (Sandbox Code Playgroud)

基本上你需要说明你正在切片。从您的示例中不清楚,但假设您的Score模型有一个数组players- 您可以使用以下slice()方式仅返回每个score通过的前 5 个玩家:

Score.find().slice('players', 5).exec(function(err, scores) {
...
Run Code Online (Sandbox Code Playgroud)


Gor*_*ran 4

...

Score.find({ match: {$in: ids}} )
     .sort([[score_sort, 'descending']])
     .skip(skip)
     .limit(limit)
     .exec(function(err, scores) {
    if (err || !scores) {
        throw err;
    } else {
        // do something cool
    }
});
Run Code Online (Sandbox Code Playgroud)