python存储MongoDB数据 (3)

这样可以只更新student字典内存在的字段。如果原先还有其他字段,则不会更新,也不会删除。而如果不用$set的话,则会把之前的数据全部用student字典替换;如果原本存在其他字段,则会被删除。
另外,update()方法其实也是官方不推荐使用的方法。这里也分为update_one()方法update_many()方法,用法更加严格,它们的第二个参数需要使用$类型操作符作为字典的键名,示例如下:

condition = {\'name\': \'Kevin\'} student = collection.find_one(condition) student[\'age\'] = 26 result = collection.update_one(condition, {\'$set\': student}) print(result) print(result.matched_count, result.modified_count)

这里调用了update_one()方法,第二个参数不能再直接传入修改后的字典,而是需要使用{\'$set\': student}这样的形式,其返回结果是UpdateResult类型。然后分别调用matched_countmodified_count属性,可以获得匹配的数据条数和影响的数据条数。
运行结果如下:

<pymongo.results.UpdateResult object at 0x10d17b678> 1 0

再看个例子:

condition = {\'age\': {\'$gt\': 20}} result = collection.update_one(condition, {\'$inc\': {\'age\': 1}}) print(result) print(result.matched_count, result.modified_count)

这里指定查询条件为年龄大于20,然后更新条件{\'$inc\': {\'age\': 1}},也就是年龄加1,执行之后会将第一条符合条件的数据年龄加1。
运行结果如下:

<pymongo.results.UpdateResult object at 0x10b8874c8> 1 1

可以看到匹配条数为1条,影响条数也为1条。
如果调用update_many()方法,则会将所有符合条件的数据都更新,示例如下:

condition = {\'age\': {\'$gt\': 20}} result = collection.update_many(condition, {\'$inc\': {\'age\': 1}}) print(result) print(result.matched_count, result.modified_count)

这时匹配条数就不再为1条了,运行结果如下:

<pymongo.results.UpdateResult object at 0x10c6384c8> 3 3

可以看到,这时所有匹配到的数据都会被更新。
10. 删除
删除操作比较简单,直接调用remove()方法指定删除的条件即可,此时符合条件的所有数据均会被删除。示例如下:

result = collection.remove({\'name\': \'Kevin\'}) print(result)

运行结果如下:

{\'ok\': 1, \'n\': 1}

另外,这里依然存在两个新的推荐方法——delete_one()和delete_many()。示例如下:

result = collection.delete_one({\'name\': \'Kevin\'}) print(result) print(result.deleted_count) result = collection.delete_many({\'age\': {\'$lt\': 25}}) print(result.deleted_count)

运行结果如下:

<pymongo.results.DeleteResult object at 0x10e6ba4c8> 1 4

delete_one()即删除第一条符合条件的数据,delete_many()即删除所有符合条件的数据。它们的返回结果都是DeleteResult类型,可以调用deleted_count属性获取删除的数据条数。
11. 其他操作
另外,PyMongo还提供了一些组合方法,如find_one_and_delete()、find_one_and_replace()和find_one_and_update(),它们是查找后删除、替换和更新操作,其用法与上述方法基本一致。
关于PyMongo的详细用法,可以参见官方文档:。
另外,还有对数据库和集合本身等的一些操作,这里不再一一讲解,可以参见官方文档:。

参考:https://cuiqingcai.com/5584.html

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgzypz.html