9.1 更新数据

1
this.ctx.model.Article.update(conditions, update, callback)
  • 参数1:查询条件, 参数2:更新对象,可以使用MondoDB的更新修改器

备注:conditions与查询数据中介绍的一样

9.2 update为更新对象

1
2
3
4
5
6
7
8
let post = {
wid: '5c492c57acbe363fd4824446',
column: [ '新闻' ],
titleHead: '',
img: '',
isAbstract: 'false',
}
this.ctx.model.Article.update({ _id: '5c4a819fb87ba4002a47bc4f ' }, post)
  • 查询Article表中特定_id,并对post中所包含的属性进行更新。

update使用MondoDB的更新修改器,有以下几种使用场景

9.2.1 “$inc”增减修改器,只对数字有效

1
this.ctx.model.Article.update({"age":22}, {$inc:{"age":1} }  );
  • 找到age=22的文档,修改文档的age值自增1

9.2.2 ‘$set’ 指定一个键的值,这个键不存在就创建它.可以是任何MondoDB支持的类型.

1
this.ctx.model.Article.update({ _id:5c4a819fb87ba4002a47bc4f }, { $set: { isDelete: true } });
  • 对5c4a819fb87ba4002a47bc4f 表进行软删除,找到特定_id数据,增加或者修改isDelete属性

9.2.3 “$unset”同上取反,删除一个键

1
this.ctx.model.Article.update({age:22}, {$unset:{age:18} } );
  • 执行后age键不存在

9.2.4 ‘$push’给一个键push一个数组成员,键不存在会创建,对数组有效

1
this.ctx.model.Article.update({name:'wxw'}, {$push:{array:10} } );
  • 返回Article表中name为wxw的数据,增加一个array键,类型为数组,有一个成员 10

9.2.5 ‘$addToSet’向数组中添加一个元素,如果存在就不添加

1
this.ctx.model.Article.update({name:'wxw'},{$addToSet:{array:10} } );
  • 返回Article表中name为wxw的数据,array中有10所以不会添加

9.2.6 ‘$each’遍历数组和 $push 修改器配合可以插入多个值

1
this.ctx.model.Article.update({name:'wxw'}, {$push:{array:{$each: [1,2,3,4,5]}} } );
  • 返回Article表中name为wxw的数据,执行后array : [10,1,2,3,4,5]

9.2.7 ‘$pop’ 向数组中尾部删除一个元素

1
this.ctx.model.Article.update({name:'wxw'}, {$pop:{array:1} } );
  • 返回Article表中name为wxw的数据,其中array : [10,1,2,3,4,5],执行后 array : [10,1,2,3,4]
  • tip:将1改成-1可以删除数组首部元素

9.2.8 ‘$pull’ 向数组中删除指定元素

1
this.ctx.model.Article.update({name:'wxw'}, {$pull:{array:10} });
  • 返回Article表中name为wxw的数据,匹配到array中的10后将其删除。