如何使用节点js

时间:2017-07-19 11:54:15

标签: mongodb mongoose mongodb-query mongoose-schema mongoose-populate

我在MongoDB中搜索了两个集合。我找到了人口。但它不符合我的情况。我在节点js中使用mongoose。我的架构如下所示。

const CoordinateSchema = new mongoose.Schema({
    activationId: {
        type: mongoose.Schema.ObjectId,
        ref: 'Activation'
    },
    mac: {
        type: mongoose.SchemaTypes.String,
        required: true,
        set: toLower
    },
    t: { type: Date },
    userId: {
        type: mongoose.Schema.ObjectId,
        ref: 'User'
    }
});

const UserSchema = new mongoose.Schema({
    email: {
        type: mongoose.SchemaTypes.String,
        required: true,
        //unique: true,
        set: toLower
    },
    mac: {
        type: mongoose.SchemaTypes.String,
        required: true,
        unique: true,
        set: toLower,
        index: true
    },
    dob: {
        type: mongoose.SchemaTypes.Date,
    },
    gender: { type: mongoose.SchemaTypes.String, set: toLower },
    activations: [{
        activationId: {
            type: mongoose.Schema.ObjectId,
            ref: 'Activation'
        },
        userType: { type: mongoose.SchemaTypes.String, set: toLower },
        _id: false
    }]
}

我在坐标集合中有单个激活的数千条记录。

我的查询查询需要从与用户集合中的userType匹配的坐标集合中过滤不同的mac。

如果我使用populate方法&然后应用过滤器,它不会限制获取记录数,因为它查询花费了很多时间,因为它将返回数千条记录。

我想只获取与用户集合中的userType匹配的坐标。

到目前为止,我还没有找到任何有效的方法来加入两个集合&适用于条件的地方。

我想知道在mongodb& amp;中加入两个集合的有效方法适用于两个集合的条件。

0 个答案:

没有答案