如何在猫鼬中对组合结果进行分页

How do I paginate combined results in mongoose?

本文关键字:结果 组合 分页      更新时间:2023-09-26

我有一个User模型,以及两个不同的关联模型ProfileWorkProfileprofile模型包含有关用户线路名称、电子邮件、家庭住址等的一般信息,workprofile包含当前办公地址、办公电话、办公电子邮件等详细信息。用户模型存储这两者objectID,并使用profileworkprofile键引用它们。

现在,我正在尝试构建的是基于这些关联模型中的字段对用户模型进行高级搜索。我看到的一种方法是单独查询它们,然后使用_.concat来连接结果。但问题是我无法在最终结果上实现skiplimit以获得正确的分页。通过适当的分页执行此操作的最佳方法是什么?

而不是在配置文件和工作配置文件上使用ref 您可以像下面一样将其添加到用户中,这允许将查找方法与 profile.name 等一起使用。

var ProfileSchema = mongoose.Schema({
    name: String
});
var WorkProfileSchema = mongoose.Schema({
    email: String
});
var UserSchema = mongoose.Schema({
    profile: ProfileSchema,
    work_profile: WorkProfileSchema 
});    
var User = mongoose.model('User', UserSchema);
var user = new User({
    profile: {name: 'Molda'},
    work_profile: { email: 'my@email.com'}
});
user.save(function(err, u) {
    User.findOne({'profile.name':'Molda'},function(err, user) {
        console.log('user', user);
    })
});

甚至使用简单的对象

var UserSchema = mongoose.Schema({
    profile: {
        name: String
    },
    work_profile: {
        email: String
    }
});

这可能并不总是好主意,但这是可能的。