【问题标题】:push or addToSet is not working with express, node and mongoose(getting response { ok: 0, n: 0, nModified: 0 })push 或 addToSet 不适用于 express、node 和 mongoose(得到响应 { ok: 0, n: 0, nModified: 0 })
【发布时间】:2019-07-15 00:26:10
【问题描述】:

我正在尝试使用 push 和 addToSet 更新文档,但它没有更新任何数据!

这是我的架构

var attendance_list = new Schema({
"username":{
    type:String,
    unique:true
}}); 

这里是我尝试更新的方式!

attedanceAtDb.update({"username":"test"},{
       $addToSet:{
                "pushtest":"test"
           }
    }
     ,(err,result)=>{
         if(err){
             reject(err);
         }else{
             resolve(result);
         }
     })

这是回应

{ ok: 0, n: 0, nModified: 0 }

提前感谢您的帮助:)

【问题讨论】:

    标签: node.js mongodb express mongoose mongoose-schema


    【解决方案1】:

    你的 Schema 应该是这样的,

    var attendance_list = new Schema({
        username: { type: String, unique: true },
        pushtest: []
    }); 
    

    希望对你有帮助...

    【讨论】:

      【解决方案2】:

      作为$addToSet 参数中所需的数组格式。尝试如下:

      attedanceAtDb.findOneAndUpdate({"username":"test"},{
             $addToSet:{
                      "pushtest": ["test"]
                 }
          },{upsert: true, new: true}
           ,(err,result)=>{
               if(err){
                   reject(err);
               }else{
                   resolve(result);
               }
           })
      

      【讨论】:

      • 一个问题?在 express 中使用 mongoose 时,我们是否需要确保我们正在推送的字段应该已经在 Shema 中定义?
      • 首先,您必须在架构中定义它,其次,如果您的文档中不存在字段,您可以使用选项 { upsert: true } 添加字段。
      • 选项 {upsert: true} 如果查询部分不匹配任何文档,则添加新文档,{new: true } 将为您提供更新的文档。
      猜你喜欢
      • 2019-03-13
      • 2019-10-12
      • 1970-01-01
      • 2019-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-24
      • 1970-01-01
      相关资源
      最近更新 更多