更新文档数组中的元素值

时间:2019-07-18 01:38:56

标签: node.js mongodb mongoose

我正在尝试将子文档的值设置为true / false 更新无法正常工作,并且没有显示错误消息

我的模式

mongoose.set('useFindAndModify', false);
mongoose.set('useCreateIndex', true);
// Define collection and schema for User
let profileSchema = new Schema({
    tags:    [String],
    desc: {type: String,required:true},
    shifts:[{
      _id:false,
       shiftId:{type:mongoose.Schema.Types.ObjectId, ref:'Shift'},
       day:{type: String,required:true},
       isActive:{type: Boolean, required:true}
      }],
    imDisponibilite:      { type: Boolean, required: false},
    userId: {type:mongoose.Schema.Types.ObjectId, ref:'User', required:true, unique:true},
    createdAt: {type: Date, default: Date.now}
  }, {timestamps: true});
Profile.findOneAndUpdate(
      { "_id": id, "shifts.shiftId": shift.shiftId, "shifts.day":shift.day },
      { 
          "$set": {
              "shifts.$.isActive": shift.isActive
          }
      },
      function(err,doc) {
         console.log(err.message+err.msg+err+" "+doc)
      }
  );

我正在获取ID,从请求中转移信息(正确记录了所有变量) 我没有任何错误 我也尝试了Profile.update(),updateMany()和updateOne() 我尝试直接从mongo控制台更新,也没有用(我是mongodb的新手) 谢谢您的帮助

编辑 将我的功能更新为: 我收到““ {” n“:1,” nModified“:1,” ok“:1}”,状态:200“,但未发生更新

Profile.updateOne(
      { "_id": ObjectId("5d2e7e943459203fb446d4f1"), "shifts.shiftId": ObjectId("5d276982a3d42a2ce0b7557e"), "shifts.day":shift.day },
      { 
          "$set": {
              "shifts.$.isActive": true
          }
      },
      function(err,doc) {
         console.log(err+" "+JSON.stringify(doc));
         res.json(doc);
      }
  );

Message screen

0 个答案:

没有答案