前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >46 - 将xml文档保存在MongoDB数据库中

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

原创
作者头像
ruochen
修改于 2021-05-31 02:29:59
修改于 2021-05-31 02:29:59
2.3K0
举报

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

代码语言:txt
AI代码解释
复制
<!-- 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>
代码语言:txt
AI代码解释
复制
'''
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)
代码语言:txt
AI代码解释
复制
<!-- products.xml -->
代码语言:txt
AI代码解释
复制
<root>
代码语言:txt
AI代码解释
复制
    <products>
代码语言:txt
AI代码解释
复制
        <product uuid='1234'>
代码语言:txt
AI代码解释
复制
            <id>10000</id>
代码语言:txt
AI代码解释
复制
            <name>iphone9</name>
代码语言:txt
AI代码解释
复制
            <price>9999</price>
代码语言:txt
AI代码解释
复制
        </product>
代码语言:txt
AI代码解释
复制
        <product uuid='4321'>
代码语言:txt
AI代码解释
复制
            <id>20000</id>
代码语言:txt
AI代码解释
复制
            <name>特斯拉</name>
代码语言:txt
AI代码解释
复制
            <price>800000</price>
代码语言:txt
AI代码解释
复制
        </product>
代码语言:txt
AI代码解释
复制
        <product uuid='5678'>
代码语言:txt
AI代码解释
复制
            <id>30000</id>
代码语言:txt
AI代码解释
复制
            <name>Mac Pro</name>
代码语言:txt
AI代码解释
复制
            <price>40000</price>
代码语言:txt
AI代码解释
复制
        </product>
代码语言:txt
AI代码解释
复制
    </products>
代码语言:txt
AI代码解释
复制
</root>
代码语言:txt
AI代码解释
复制
[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')])]
代码语言:txt
AI代码解释
复制
5e5e77236a8c0732e4edc4e4
代码语言:txt
AI代码解释
复制
5e5e77236a8c0732e4edc4e5
代码语言:txt
AI代码解释
复制
5e5e77236a8c0732e4edc4e6
代码语言:txt
AI代码解释
复制
{'_id': ObjectId('5e5e77236a8c0732e4edc4e5'), '@uuid': '4321', 'id': '20000', 'name': '特斯拉', 'price': 800000}
代码语言:txt
AI代码解释
复制
{'_id': ObjectId('5e5e77236a8c0732e4edc4e6'), '@uuid': '5678', 'id': '30000', 'name': 'Mac Pro', 'price': 40000}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深入解析 Java 中的 SQL 解释器树设计与实现
这里先给大家推荐一篇实用的好文章:《全面解锁 SpringBoot 集成 Mybatis-Plus!从 LambdaQueryWrapper 到测试用例的实战指南》 来自作者:bug菌
喵手
2024/11/23
1950
深入解析 Java 中的 SQL 解释器树设计与实现
golang源码分析:抽象语法树
golang提供了非常强大的工具集合,通过这些工具我们可以非常方便地进行源码的分析加工,在代码中插入我们想要的代码,或者提取源码中我们关心的信息。如何使用呢其实非常简单:
golangLeetcode
2023/03/14
4120
golang源码分析:抽象语法树
TiDB 源码阅读系列文章(五)TiDB SQL Parser 的实现
PingCAP 发布了 TiDB 的源码阅读系列文章,让我们可以比较系统的去学习了解TiDB的内部实现。最近的一篇《SQL 的一生》,从整体上讲解了一条 SQL 语句的处理流程,从网络上接收数据,MySQL 协议解析和转换,SQL 语法解析,查询计划的制定和优化,查询计划执行,到最后返回结果。
PingCAP
2018/03/22
4.6K3
TiDB 源码阅读系列文章(五)TiDB SQL Parser 的实现
前端AST详解,手写babel插件
抽象语法树(Abstract Syntax Tree,AST),是源代码(不仅限于JavaScript,同时还应用于其他语言,例如: Python,Rust等)语法结构的⼀种抽象表示。它以树状的形式表现编程语⾔的语法结构,树上的每个节点都表示源代码中的⼀种结构。 AST 运⽤⼴泛,⽐如:
can4hou6joeng4
2023/11/29
3250
Rc-lang开发周记14 重构与AST Visitor
本周先是解决了上周遗留下来的一个非常头疼的问题,之后重构了Token和AST的定义以及考虑了一下Visitor。之后也编写了建立符号表的代码以及一半转换到vm指令的代码,但是总觉得哪里不太对劲就先停了下来,后续确认无误了再一起拿出来讲。还学习了一些rust的实现方式,关于IR方面有更多了解以后有意向再单独出一篇文章讲解自己的一些了解
AkemiHomura
2023/04/07
2970
Rc-lang开发周记14 重构与AST Visitor
TiDB SQL Parser 的实现
其中,SQL Parser的功能是把SQL语句按照SQL语法规则进行解析,将文本转换成抽象语法树(AST),这部分功能需要些背景知识才能比较容易理解,我尝试做下相关知识的介绍,希望能对读懂这部分代码有点帮助。
mazhen
2023/11/24
6500
TiDB SQL Parser 的实现
MyCat - 源代码篇(16)
首先第一步粗粒度解析,解析出来的是一个SQLStatement,对于本条语句实际实现和涉及到的主要类是:
干货满满张哈希
2021/04/12
6590
MyCat - 源代码篇(16)
SQL语法树介绍及工作原理
SQL语法树(Abstract Syntax Tree,简称AST)是一种用来表示SQL查询结构的树状数据结构。它是SQL解析过程的关键产出物,将原始的SQL文本转换成一种更容易理解和操作的形式。在编译器设计和数据库查询处理中,语法树起到了核心作用。
用户7353950
2024/07/05
1.3K0
SQL语法树介绍及工作原理
Sharding-JDBC 源码分析 —— SQL 解析(二)之SQL解析
1. 概述 2. SQLParsingEngine 3. SQLParser SQL解析器 3.2.1 #parseExpression() 和 SQLExpression 3.2.2 #parseAlias() 3.2.3 #parseSingleTable() 3.2.4 #skipJoin() 3.2.5 #parseWhere() 3.1 AbstractParser 3.2 SQLParser 4. StatementParser SQL语句解析器 4.1 StatementParser 4.2
芋道源码
2018/03/02
2K0
Sharding-JDBC 源码分析 —— SQL 解析(二)之SQL解析
jsqlparser:实现基于SQL语法分析的SQL注入攻击检查
之前写过一篇博客:《java:正则表达式检查SQL WHERE条件语句防止注入攻击和常量表达式》,当前时通过正则表达式来检查SQL语句中是否有危险关键字和常量表达式实现SQL语句的注入攻击检查。坦率的说,这个办法是有漏洞的,误判,漏判的概率很大,基于当前我的知识能力,也只能做到这样。 最近学习了jsqlparser,我知道我找到了更好的办法来解决SQL注入攻击检查问题。 jsqlparser是一个java的SQL语句解析器,在上一篇博客:《jsqlparser:基于抽象语法树(AST)遍历SQL语句的语法元素》介绍了如何通过jsqlparser来遍历SQL语句中所有的字段和表名引用。 其实它可以用来进行更复杂的工作,jsqlparser会将一条SQL语句的各种语法元素以抽象语法树(AST,abstract syntax tree)形式解析为很多不同类型对象,通过对AST的遍历就可以对SQL语句进行分析。采用这种方式做SQL注入攻击检查不会有误判,漏判的问题。
10km
2022/11/16
3.1K0
[Spark SQL] 源码解析之Parser
Parser就是将SQL字符串切分成一个个Token,再根据一定语义规则解析为一棵语法树。我们写的sql语句只是一个字符串而已,首先需要将其通过词法解析和语法解析生成语法树,Spark1.x版本使用的是scala原生的parser语法解析器,从2.x后改用的是第三方语法解析工具ANTLR4, 在性能上有了较大的提升。
UFO
2018/08/29
2.5K0
使用 AST 实现 babel 插件编写
抽象语法树 (Abstract Syntax Tree) 是源代码语法结构的⼀种抽象表示,以树状描述编程语⾔的语法结构,每个节点表示源代码中的⼀种结构。AST常用于代码语法检查、⻛格检查、格式化、代码提示、混淆压缩、自动补全等,还可以用来优化代码结构,如 webpack 以及 CommonJS、AMD、CMD、UMD等代码规范之间的转化等。
CS逍遥剑仙
2022/08/01
1.3K0
Cobar提出的一种在分库场景下对Order By / Limit 的优化
Cobar 虽然是一款“古老”的数据库中间件,但目前不少公司仍然在用它,且它包含了不少有意思的算法和实现,今天就来分享 Cobar 提出的一种在分库场景下对 Order By / Limit 的优化。
龟仙老人
2021/10/12
2340
曹大带我学 Go(4)—— 初识 ast 的威力
抽象语法树是编译过程中的一个中间产物,一般简单了解一下就行了。但我们可以把 Go 语言的整个 parser 和 ast 包直接拿来用,在一些场景下有很大的威力。
梦醒人间
2021/06/17
2.4K0
通过v8 0.1.5源码分析js的编译、执行过程
我们主要关注Compile和Run这两个函数。这两个函数都属于Script这个类,我们看看定义。
theanarkh
2020/02/18
2.3K0
93.精读《syntax-parser 源码》
syntax-parser 是一个 JS 版语法解析器生成器,具有分词、语法树解析的能力。
黄子毅
2022/03/14
6510
如何实现一个SQL解析器
随着技术的不断的发展,在大数据领域出现了越来越多的技术框架。而为了降低大数据的学习成本和难度,越来越多的大数据技术和应用开始支持SQL进行数据查询。SQL作为一个学习成本很低的语言,支持SQL进行数据查询可以降低用户使用大数据的门槛,让更多的用户能够使用大数据。
2020labs小助手
2022/10/24
2.7K0
探究Presto SQL引擎(1)-巧用Antlr
自2014年大数据首次写入政府工作报告,大数据已经发展7年。大数据的类型也从交易数据延伸到交互数据与传感数据。数据规模也到达了PB级别。
冬夜先生
2021/10/12
1.7K0
逆向进阶,利用 AST 技术还原 JavaScript 混淆代码
AST(Abstract Syntax Tree),中文抽象语法树,简称语法树(Syntax Tree),是源代码的抽象语法结构的树状表现形式,树上的每个节点都表示源代码中的一种结构。语法树不是某一种编程语言独有的,JavaScript、Python、Java、Golang 等几乎所有编程语言都有语法树。
K哥爬虫
2022/04/28
6K3
逆向进阶,利用 AST 技术还原 JavaScript 混淆代码
the-super-tiny-compiler源码解析
通过实现编译器来支持简单的表达式转换,把Lisp风格的函数调用转换成C风格的,例如:
ayqy贾杰
2019/06/12
1.2K0
相关推荐
深入解析 Java 中的 SQL 解释器树设计与实现
更多 >
LV.3
滴滴中间件研发工程师
作者相关精选
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档