Mongoose Schema - 如何创建一个模式,其中一个字段是一个键值对数组?

时间:2015-04-21 01:39:30

标签: node.js mongodb mongoose

 var db = require('../db');
 var post = db.Schema({
   msgtype: { type: Number },
   msgtext: { type: String },
   sender: { type: String },
   recipients: { xxxxxx },
   created_on: { type: Date }
 });
 module.exports = db.model('Post', post);

我希望字段,收件人,是类型 - 数组     {     电子邮件:{type:String},     读:{type:Boolean}     }。

1 个答案:

答案 0 :(得分:1)

只需将recipients声明为数组:

...
recipients: [{
  email: String,
  read: Boolean
}]
...

要在recipient字段中搜索email项,请执行:

Post.findOne({'recipients.email': 'peter.w@gmail.com'}, function (err, doc) {
  if (!err) console.log(doc);
});

要更新项目,请执行以下操作:

Post.findOneAndUpdate(
  { 'recipients.email': 'peter.w@gmail.com' },
  {
    '$set': {
      'recipients.$.read': true
    }
  },
  function(err, doc) {
});

这种方法会将true设置为所有recipients,其电子邮件是找到的第一个文档的peter.w@gmail.com