使用Mongoose查找并更新兄弟

时间:2014-10-29 12:47:07

标签: node.js mongodb mongoose

我试图找到对另一个架构的引用并更新兄弟字段。具体来说,我试图根据特定的'调查来操纵下面的hasResponded字段。的ObjectId。

我的架构如下所示:

var userSchema = new mongoose.Schema({

  // some other stuff

  surveys: [{
      survey: {
          type: mongoose.Schema.Types.ObjectId,
          ref: 'Survey'
      },
      hasResponded: {
          type: Boolean,
          default: false
      }
  }]

});

1 个答案:

答案 0 :(得分:0)

如果您有调查ID,只需搜索阵列中具有此特定ID的所有用户。 这样的事情:

Users.find({surveys: { "$elemMatch": { type: <ID> } } });

然后,遍历用户及其相应的调查数组,找到与您提供的ID匹配的用户。

不得不说如果经常发生这种查询,我会将这个数据库的结构略有不同。

制作新的架构 - UserSurveys,其中包含用户的ID和调查+ hasResponded。像这样:

var UserSurveySchema = new mongoose.Schema({
    user_id: {type: mongoose.Schema.Types.ObjectId, ref: 'User'},
    survey_id: {type: mongoose.Schema.Types.ObjectId, ref: 'Survey'}
    hasResponded: {type:Boolean, 'default':false}
    ...
});

您可能还希望在用户和调查ID上保留索引 然后,更新字段会更容易,请求将花费更短的时间。

希望这有帮助。