当前位置:嗨网首页>书籍在线阅读

04-使用Python保存文档

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

18.3 使用Python保存文档

使用Python将文档保存到集合中 在本节中,您将创建一个简单的Python应用程序,它使用Collection对象的方法save()来更新示例数据库中的一个既有文档。通过这个示例,您将熟悉如何使用Python更新并保存文档对象。程序清单18.5显示了这个示例的代码。 在这个示例中,函数 main 连接到MongoDB数据库,获取一个Collection对象,并调用其他的方法来保存文档。方法showWord()显示更新前和更新后的单词ocean。 方法saveBlueDoc()从数据库中获取单词ocean的文档,使用put()将字段category改为blue,再使用方法save()保存这个文档。方法resetDoc()从数据库获取单词ocean的文档,使用方法put()将字段category恢复为空,再使用方法save()保存这个文档。 请执行如下步骤,创建并运行这个将文档保存到示例数据库中并显示结果的Python应用程序。 1.确保启动了MongoDB服务器。 2.确保下载并安装了Python MongoDB驱动程序,并运行了生成数据库words的脚本文件code/hour05/generate_words.js。 3.在文件夹code/hour18中新建一个文件,并将其命名为PythonDocSave.py。 4.在这个文件中输入程序清单18.5所示的代码。这些代码使用save()来保存文档。 5.将这个文件存盘。 6.打开一个控制台窗口,并切换到目录code/hour18。 7.执行下面的命令来运行这个Python应用程序。程序清单18.6显示了这个应用程序的输出。 程序清单18.5 PythonDocSave.py:在Python应用程序中将文档保存到集合中 程序清单18.6 PythonDocSave.py-output:在Python应用程序中将文档保存到集合中的输出

一种更新数据库中文档的便利方式是,使用Collection对象的方法save(),这个方法接受一个Dictionary作为参数,并将其保存到数据库中。如果指定的文档已存在于数据库中,就将其更新为指定的值;否则就插入一个新文档。

方法save()的语法如下,其中参数doc是一个Dictionary对象,表示要保存到集合中的文档:

save(doc)

▼ Try It Yourself

python PythonDocSave.py
01 from pymongo import MongoClient
02 def showWord(collection):
03      query = {'word' : 'ocean'}
04      fields = {'word' : True, 'category' : True}
05      doc = collection.find_one(query, fields)
06      print (doc)
07 def saveBlueDoc(collection):
08      query = {'word' : "ocean"}
09      doc = collection.find_one(query)
10      doc["category"] = "blue"
11      results = collection.save(doc)
12      print ("\nSave Docs Result:")
13      print (str(results))
14      print ("\nAfter Saving Doc:")
15      showWord(collection)
16 def resetDoc(collection):
17      query = {'word' : "ocean"}
18      doc = collection.find_one(query)
19      doc["category"] = ""
20      results = collection.save(doc)
21      print ("\nReset Docs Result:")
22      print (str(results))
23      print ("\nAfter Resetting Doc:")
24      showWord(collection)
25 if __name__=="__main__":
26      mongo = MongoClient('mongodb://localhost:27017/')
27      mongo.write_concern = {'w' : 1, 'j' : True}
28      db = mongo['words']
29      collection = db['word_stats']
30      print ("Before Saving:")
31      showWord(collection)
32      saveBlueDoc(collection)
33      resetDoc(collection)
Before Saving:
{'category': '', '_id': ObjectId('52e89477c25e8498553265e4'), 'word': 'ocean'}
Save Docs Result:
52e89477c25e8498553265e4
After Saving Doc:
{'category': 'blue', '_id': ObjectId('52e89477c25e8498553265e4'), 'word': 'ocean'}
Reset Docs Result:
52e89477c25e8498553265e4
After Resetting Doc:
{'category': '', '_id': ObjectId('52e89477c25e8498553265e4'), 'word': 'ocean'}