从mongoose中的文档中选择特定字段

时间:2016-12-10 19:04:18

标签: node.js mongodb mongoose

嗨我有这个字段的三个模式

var interactionSchema = new Schema({
    pollee: { type: ObjectId, ref: 'Pollee' },
    answers: { type: [ObjectId], ref: 'Answer', autopopulate: true },
    status: type: String
});

var PolleeSchema = new Schema({
    firstName: String,
    lastName: String,
    gender: String,
    user: { type: ObjectId, ref: 'User', required: true }, 
    interactions: { type: [ObjectId], ref: 'Interaction', autopopulate: true }
});

var userSchema = new Schema({
    email: String,
    pollee: { type: Schema.Types.ObjectId, ref: 'Pollee', autopopulate: true }
});

我需要在Pollee中实现查询并从用户和交互中瞳孔化,但是从交互中我只需要状态字段,我不需要答案和包含交互集合的其他ObjectID数组。

我做了这个查询

Pollee.find(req.body.filters)
        .select('id age birthday country device_register gender municipality state parish user interactions.status')
        .populate('user','email createdAt')
        .exec(function(err,pollees){
           //Other
        }
       //....

此返回交互数组但不返回状态字段。如果我只在select上编写交互,则返回与交互中所有字段的交互。

我试试这个

Pollee.find(req.body.filters)
        .select('id age birthday country device_register gender municipality state parish user')
        .populate('user','email createdAt')
        .populate('interactions', 'status')
        .exec(function(err,pollees){
           //Other
        }
       //....

这不会从交互中返回

我只需要来自互动的状态字段。

这里的问题是来自Pollee Schema的交互字段,这个字段是一个ObjectsId数组,这个字段是从Schema自动填充的。我想只从交互中选择状态字段

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我发现您使用的是mongoose-autopopulate

他们的文件中说明你可以做this

var PolleeSchema = new Schema({
  //...
  interactions: { type: [ObjectId], ref: 'Interaction', autopopulate: { select: 'status' } }
});