【问题标题】:update on a subdoc with mongoose使用 mongoose 更新子文档
【发布时间】:2015-01-01 23:29:25
【问题描述】:

我正在使用猫鼬。我只是想更新特定用户订阅的订阅状态。

我有以下数据库结构:

var subscriptionSchema = new mongoose.Schema({                 
            subscription_id            :String,
            start:                      String,
            status:                     String,
            user_id:                    String,
            cancel_at_period_end:       String,
            current_period_start:       String,
            current_period_end:         String,
            ended_at:                   String,
            trial_start:                String,
            trial_end:                  String,
            canceled_at:                String,
            quantity:                   String,
            application_fee_percent:    String,
            discount:                   String,
            tax_percent:                String   
        });



// define the schema for our user model
var userSchema = mongoose.Schema({
stripe           : {
    stripe_customer_id: String,
    default_card:       String          
},
subscriptions: [subscriptionSchema],
cards: [cardSchema]
});

我有这段代码,它不会抛出任何错误,但也不会更新状态。有任何想法吗? Subscription_id 对记录是唯一的。一个用户可能有多个订阅

var user = require('./models/user');

user.update(
   { 
    'subscriptions.subscription_id':updatedsubscription_id
    },
   {
      status: updatedsubscription_status
   },
   { upsert: true }, function(err, doc){
    if (err) return console.log(err);
    return console.log('updated the subscription in db');
}
);

【问题讨论】:

    标签: node.js mongodb mongoose mongodb-query


    【解决方案1】:

    当通过 id 更新数组元素时,可以使用更新对象中的$ positional operator 来表示查询匹配的元素的索引:

    user.update(
       {
         'subscriptions.subscription_id':updatedsubscription_id
       },
       {
          'subscriptions.$.status': updatedsubscription_status
       },
       function(err, count){
          if (err) return console.log(err);
          return console.log('updated the subscription in db');
       }
    );
    

    【讨论】:

      猜你喜欢
      • 2012-10-27
      • 2017-08-13
      • 1970-01-01
      • 1970-01-01
      • 2019-02-11
      • 1970-01-01
      • 2013-03-30
      • 1970-01-01
      相关资源
      最近更新 更多