46 - 将xml文档保存在MongoDB数据库中

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}

持续更新中。。。。

发布了160 篇原创文章 · 获赞 181 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_29339467/article/details/104644654
46