我有一个相当巨大的XML(> 10mb大小& 40+个元素)。目前,我们在Oracle数据库中存储这样的xml,并使用xquery来查询和检索部分xml。这个过程很慢,需要很多db调用。我们正在探索mongodb来存储这个XML并进行查询。 我justed将xml转换为json并加载到mongo集合中,并将巨大的json数据存储在闪存中。它将xml节点存储为嵌套文档。但是,当我查询(使用find)作为最内层元素时,它总是返回整个文档,其中也包含具有不匹配元素值的节点。我期望只有少数节点与给定的节点值相匹配。 让我知道是否有任何最好的方式来存储在mongo数据库这样大的XML文件。还让我知道如何检索具有查询中指定的确切值的内部节点。提前致谢。在MongoDB中存储大型XML
8
A
回答
1
这是过滤多级嵌入式文档的行为,通常匹配过滤器将返回整个文档,而不是子集。
看看我的答案为mongodb-querying-array-elements-within-a-document和how-to-find-the-matched-record-in-mongodb更多信息
可能是你可以添加当前的示例XML模式你有,有人会帮你构建的应用程序。
3
有几个事实,你应该记住:
数1 MongoDB中仅返回取决于它是否击中或不整的文件,也没有功能,只返回它的一部分(10 2011年10月),如果你需要过滤,你必须用你自己的代码来实现它。
Number 2-注意elemmatch关键字。它表示只在相同的子文档中搜索一些点击,但不能查看整个文档,因此您可能会在此处感到困惑。
3号码 - 与RDBMS-s相比,你没有正确的策略将你的聚集分为mongo中的集合。所以不同的数据表示可能会解决你的情况
数4 - 尽管3号备注关于“不正确的方式”中,有一种普遍的建议,让您的文件小于10 MB大小
2
你应该看看索萨利托XML数据库:http://www.28msec.com。 它使用MongoDB作为数据存储。
10
您是否想过尝试使用最新的XML数据库,比如BaseX(http://basex.org)?它可能会给你更好的结果,特别是如果你之前使用过XQuery。
5
我有同样的问题。在我的情况下,每个XML文件中的顶级节点总是包含一个巨大的小节点列表,所以我最终保存了这些项目。要做到这一点,我写了我自己的xml-to-json命令行工具。我用它将10GB的XML数据转换为JSON,格式为mongoimport。
相关问题
- 1. 将数据存储在XML或MongoDB中
- 2. 如何在MongoDB中存储泛型JSON?
- 3. MongoDB限制存储大小?
- 4. Total MongoDB存储大小
- 5. 在内存中存储大型地图
- 6. 在SQL中创建并存储大型XML输出
- 7. 在xml中存储xml
- 8. 数据存储在MongoDB中
- 9. 在mongodb中存储文本?
- 10. 在MongoDB中存储过程
- 11. 在mongodb中存储upvotes/downvotes
- 12. 在MongoDB中存储JSON
- 13. Rails:在MongoDB中存储JSON
- 14. 在MongoDB中存储图形
- 15. 在MongoDB中存储路由
- 16. 在MongoDB中存储日期
- 17. 在MongoDB中存储(复杂)MongoDB查询
- 18. 使用存储库模式时的MongoDB和大型数据集
- 19. 将XML存储在XML类型字段中或使用FILESTREAM
- 20. 存储大型查找表
- 21. 存储MongoDB ObjectIds数组的类型?
- 22. 在Active Directory中存储XML
- 23. 在Mongodb中存储100 MB的大文件
- 24. 如何在MongoDB中为用户存储大量消息?
- 25. 在MongoDB中存储非常大的文档
- 26. 如何使用Node.js在MongoDB中存储大数字
- 27. 通过Mongoose在MongoDB中存储巨大的JSON数据数组
- 28. 在Meteor中的MongoDB中存储函数
- 29. 如何设计一个系统在Oracle DB中存储大型XML?
- 30. 在mongodb存储日期
您可以使用投影来获取文档的一部分:https://docs.mongodb.com/v3.2/tutorial/project-fields-from-query-results/ –