如何获取mongodb

时间:2016-02-29 13:30:26

标签: arrays node.js mongodb mongoose mongoose-schema

我想从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字段。

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

2 个答案:

答案 0 :(得分:1)

好的,据我所知,你有一个名为users的数组,它有你的用户对象。并且您希望从该数组中仅获取_id字段值。所以你可以这样做:

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

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

答案 1 :(得分:1)

请试试这个

-chardev pty,id=mypty