1. 请解释什么是NoSQL数据库,有哪些类型的NoSQL数据库,请说出这些数据库的典型产品,以及每个类型的NoSQL数据库的适用场景
- NoSQL: Not Only SQL
- 键值(key-value)数据库
- Redis、Riak、Memcached
- 适用场景: 用来存储用户信息,比如会员、配置文件、参数、购物车等
- 文档(Document-Oriented)类型
- MongoDB
- CouchDB
- RavenDB
- 适用场景: 日志、分析数据
- 列存储数据库
- HBase
- Cassandra
- 适用场景: 日志、博客平台。 标签可以存储到一列、类别可以存储到另一列、文章可以存储到另外一列
- 图数据库
- Neo4J
- OrientDB
- 适用场景
- 在一些关系型强的数据库可以使用
- 推荐引擎
2. 将xml文档保存到MongoDB数据库中,并查询文档中的数据
products.xml
<!-- products.xml -->
<root>
<products>
<product uuid="1234">
<id>10000</id>
<name>iphone9</name>
<price>9999</price>
</product>
<product uuid="4321">
<id>20000</id>
<name>特斯拉</name>
<price>800000</price>
</product>
<product uuid="5678">
<id>30000</id>
<name>Mac Pro</name>
<price>40000</price>
</product>
</products>
</root>
'''
pip install pymongo
'''
from pymongo import *
Client = MongoClient()
db = Client.data
products = db.products
products.delete_many({'price':{'$gt': 0}})
import xmltodict
f = open('products.xml', 'rt', encoding='utf-8')
xml = f.read()
f.close()
print(xml)
d = xmltodict.parse(xml)
productList = d['root']['products']['product']
print(productList)
for product in productList:
product['price'] = int(product['price'])
productId = products.insert_one(product).inserted_id
print(productId)
for product in products.find({'price': {'$gt':10000}}):
print(product)
<!-- products.xml -->
<root>
<products>
<product uuid='1234'>
<id>10000</id>
<name>iphone9</name>
<price>9999</price>
</product>
<product uuid='4321'>
<id>20000</id>
<name>特斯拉</name>
<price>800000</price>
</product>
<product uuid='5678'>
<id>30000</id>
<name>Mac Pro</name>
<price>40000</price>
</product>
</products>
</root>
[OrderedDict([('@uuid', '1234'), ('id', '10000'), ('name', 'iphone9'), ('price', '9999')]), OrderedDict([('@uuid', '4321'), ('id', '20000'), ('name', '特斯拉'), ('price', '800000')]), OrderedDict([('@uuid', '5678'), ('id', '30000'), ('name', 'Mac Pro'), ('price', '40000')])]
5e5e77236a8c0732e4edc4e4
5e5e77236a8c0732e4edc4e5
5e5e77236a8c0732e4edc4e6
{'_id': ObjectId('5e5e77236a8c0732e4edc4e5'), '@uuid': '4321', 'id': '20000', 'name': '特斯拉', 'price': 800000}
{'_id': ObjectId('5e5e77236a8c0732e4edc4e6'), '@uuid': '5678', 'id': '30000', 'name': 'Mac Pro', 'price': 40000}