【发布时间】:2014-09-24 17:14:43
【问题描述】:
我有一个包含相当大的嵌入式数组的 MongoDB 文档:
name : "my-dataset"
data : [
{country : "A", province: "B", year : 1990, value: 200}
... 150 000 more
]
假设我想返回 country == "A" 的数据对象。
这样做的正确方法是什么,例如通过 NodeJs?
给定 150 000 个条目和 200 个匹配项,查询大约需要多长时间?
将数据存储为文档并将名称存储为每个文档的属性会更好(性能/结构方面)吗?
使用 Mysql 会更有效吗? )
【问题讨论】:
-
好的。现在在这里喘口气,您实际上在问哪个问题?您是说“文档”有 150,000 个嵌入式数组元素吗?可能不是一个好的设计。试着仔细解释你要做什么,让它听起来像一个问题。该解决方案最有可能使用不同的结构,但正确的答案将解决您需要做的事情,因为您正确解释了它。顺便提一句。仅加粗文本并不能为您提供更好的答案。
-
4.根据我的经验,在与 mysql 进行性能比较时,结果对于简单查询(如“通过此 ID 找到我的一条记录”)基本相同,而对于更复杂的 sql 查询(使用分组等),使用 mysql 的结果要好一些。(使用 mongo 的聚合框架)对于一些相当大量的数据(0.5 Tb)。似乎更重要的是,mysql 需要 3 倍的磁盘空间来保存完全相同的数据,这间接可能是它更快(更少的磁盘读取)的原因。
-
explain()是在 mongodb 中分析性能的最佳方式。在docs.mongodb.org/manual/reference/method/cursor.explain/…中查找更多详细信息
标签: node.js mongodb mongodb-query