「这是我参与2022首次更文挑战的第28天,活动详情查看:2022首次更文挑战」。
面试题第八关:
第一部分——考点:
- 了解MongoDB数据库;
- 掌握pymongo模块的基本使用方法。
第二部分——面试题:
1.面试题一:请解释什么是NoSQL数据库,有哪些类型的NoSQL数据库,请说出这些数据库的典型产品,以及每个类型的NoSQL数据库的适用场景?
2.面试题二:将XML文档保存到MongoDB数据库中,并查询文档中的数据。
第三部分——解析:
面试题一 之 什么是NoSQL数据库,有哪些类型的NoSQL数据库,请说出这些数据库的典型产品,以及每个类型的NoSQL数据库的适用场景:
- NoSQL全称Not Only SQL,是众多非关系型数据库的统称,它和关系型数据库一样,也是用来存储数据的仓库。
-
第一个类型的数据库:键值(key-value)数据库; 典型产品:Redis,Riak,Memcached; 适用场景:用来存储用户信息,比如会话,配置文件,参数,购物车等。
-
第二个类型的数据库:文档(Document-Oriented)数据库; 典型产品:MongoDB,CouchDB,RavenDB; 适用场景:日志,分析数据。
-
第三个类型的数据库:列存储数据库; 典型产品:HBase,Cassandra; 适用场景:日志,博客平台(比如标签可以存储到一列,类别可以存储到另一列,文章可以存储另外一列)。
-
图数据库; 典型产品:Neo4J,OrientDB; 适用场景:①在一些关系型强的数据库可以使用②推荐引擎。
面试题二 之 将XML文档保存到MongoDB数据库中,并查询文档中的数据:
- pymongo需要额外安装哦~
XML文档如下(文件名:test.xml):
<!-- products.xml -->
<root>
<products>
<product uuid='1234'>
<id>10000</id>
<name>苹果</name>
<price>99999</price>
</product>
<product uuid='1235'>
<id>10001</id>
<name>小米</name>
<price>999</price>
</product>
<product uuid='1236'>
<id>10002</id>
<name>华为</name>
<price>9999</price>
</product>
</products>
</root>
# coding=utf-8
# _author__ = 孤寒者
import xmltodict
from pymongo import *
Client = MongoClient()
db = Client.data # 相当于获取库
products = db.products # 相当于获取表(MongoDB一个特点,如果这个表不存在就会直接创建~
# 习惯性,插入数据前先删除所有数据, 此处小括号里的是删除条件:删除所有price大于0 的数据
products.delete_many({'price':{'$gt':0}})
# 读取XML文档
with open('test.xml', 'rt', encoding='utf-8') as f:
xml = f.read()
print(xml)
# 解析XML文档
d = xmltodict.parse(xml)
productList = d['root']['products']['product']
print(productList)
# 迭代解析XML文档的结果,一条一条的插入MongoDB数据库
for product in productList:
# 将price转为int类型~
product['price'] = int(product['price'])
# MongoDB数据库如果插入数据成功会返回一个id值
productId = products.insert_one(product).inserted_id
print(productId)
# 从MongoDB数据库中读取刚刚插入的是数据
for product in products.find({'price':{'$gt':10000}}): # 查询price大于10000的数据
print(product)
第四部分——总结:
- 通过pymongo模块可以操作MongoDB数据库,该模块需要单独安装~
🔆In The End!
👑有关于Me
个人简介:我是一个硬件出身的计算机爱好者,喜欢program,源于热爱,乐于分享技术与所见所闻所感所得。文章涉及Python,C,单片机,HTML/CSS/JavaScript及算法,数据结构等。
| 从现在做起,坚持下去,一天进步一小点,不久的将来,你会感谢曾经努力的你! |
|---|
认真仔细看完本文的小伙伴们,可以点赞收藏并评论出你们的读后感。并可关注本博主,在今后的日子里阅读更多技术文哦~
如有错误或者言语不恰当的地方可在评论区指出,谢谢!
如转载此文请联系我征得本人同意,并标注出处及本博主名,谢谢 !