章节二:mongodb数据更新你真的会了吗?

996 阅读1分钟

在这一章中,我们会详细讲解mongodb更新的多种操作语法。

单条记录的更新

*更新指令如下:
db.test.updateOne(
      { "city_id" : "298" },
      { $set: { "city_name" : "阿坝5" } }
)

1.{ "city_id" : "298" } 为查询语句
2.{ $set: { "city_name" : "阿坝5" } } 为更新语句

* 执行结果如下:  

{ "acknowledged" : true, "matchedCount" : 1, "modifiedCount" : 1 }
*删除指令如下:
db.test.deleteOne( { "city_id" : "298" } );
1.{ "city_id" : "298" } 为查询语句

* 执行结果如下:  
{ "acknowledged" : true, "deletedCount" : 1 }

多条记录的更新

1.更新多条记录:
 db.test.updateMany(
      { "city_name" : "阿坝" } ,
      { $set: { "status" : 1 }}
 );
 另外一种写法更通用:
  db.test.update({ "city_name" : "阿坝" },{$set: { "status" : 1 }},false,true)
 

  更新多条记录结果:
{ "acknowledged" : true, "matchedCount" : 2, "modifiedCount" : 2 }


2. 删除多条记录指令:
db.test.deleteMany( { "city_name" : "阿坝" } );
   删除多条记录结果:
{ "acknowledged" : true, "deletedCount" : 8 }


3. 从文档中移除指定的键
db.test.update({"city_name" : "阿坝"},{$unset:{'status':1}})
从文档中移除status字段

python爬虫中实现批量执行更新语句

# -*- coding: utf-8 -*-
# @Time    : 20/1/15 下午6:09
# @Author  : cc
# @FileName: te.py
from pymongo import UpdateOne

from utils import mongo_util

collection_test = mongo_util.get_clllection('test', 'test')
update1 = UpdateOne({'_id': '299'}, {'$set': {"status": 1}})
update2 = UpdateOne({'_id': '301'}, {'$set': {"status": 0}})
write_list = [update1, update2]
collection_test.bulk_write(write_list, ordered=False)

python爬虫中数据更新中遇到的坑,及填坑过程

update(<query>,<update>,<upsert>,<multi>),
其中<query>表示筛选的条件,<update>是要更新的数据

multi=True 更新匹配到的所有记录  multi=False 更新匹配到的第一条记录
(默认值为False)