1

我想从users数组中获取指定字段的值。类似的东西{_id: {$in: this.users}}。不同之处在于它users是一个对象数组,我想获取_id该数组中每个对象的字段。这是一个代码示例:

var UserSchema = new Schema({
    username: {type: String, required: true, unique: true},
    password: {type: String, required: true,},
    email: {type: String, required: true, unique: true},
    role: {type: String, enum: ['user'], required: true},
    name: String,
    phoneNumber: Number,
    companies: [{
        _company: {type: Schema.ObjectId, ref: 'Company'},
        points: Number
    }],
    points: Number,
    created_at: Date,
    updated_at: Date
})

我想为 mongoose UserSchema 编写这个中间件:

UserSchema.pre('remove', function(next) {
    this.model('Company').update(
        {_id: {$in: ??????????????????}},
        {$pull: {users: this._id}},
        next()
    )
})

但我不知道如何_company使用$in.

任何帮助将不胜感激。谢谢。

4

2 回答 2

1

好的,据我了解,您有一个名为 的数组users,其中包含您的用户对象。您只想_id从该数组中获取字段值。所以你可以做这样的事情:

var ids = users.map(function(user){ return user._id });

现在您有了_id用户的值,您可以继续进行查询。

于 2016-02-29T14:22:36.297 回答
1

请试试这个

UserSchema.pre('remove', function(next) {
    var ids = this.companies.map(function(o) {return o._company;});
    this.model('Company').update(
        {_id: {$in: ids}},
    //...
于 2016-02-29T14:41:54.310 回答