【发布时间】:2018-07-19 20:52:03
【问题描述】:
我需要一些关于 mongodb 数据库查询的建议。
我的数据库中有超过 200 万条数据。我想将这些记录与一个包含 200 万条记录的 CSV 文件进行比较。
所以我有两个选择:
我从 CSV 获取一条记录并在数据库中搜索 200 万条数据。在这种情况下,我在数据库中进行 200 万条查询。
第二个选项是,我可以进行 200 次查询。在每个查询中,我只能从 DB 中带入 10000 个数据块,并使用 hashmap 和循环将这些记录与 CSV 文件进行比较(在内存比较中)。
我正在使用 node.js 和 mongoose.js npm 模块。
哪个选项性能好?
例如:
1) 第一种情况:(短信交易表,csv 包含来自网关提供商的报告,我想将其与 DB 匹配)
CSV 包含以下数据:
transaction_id, phone_number
MongoDB 文档包含以下数据:
phone_number、transaction_id 或 combine_field(phone_number+"-"+transaction_id)
**combined_field 是 phone_number 和 transaction_id 的组合,由“-”(破折号)分隔。
我想要这样的结果:有多少来自 CSV 的记录在 DB 中不存在
2) 第二种情况(对于联系人表,用户正在从 csv 上传联系人)
CSV 包含以下数据:
名字、姓氏、电子邮件、电话
MongoDB 数据包含以下数据:
first_name, last_name, email = [{value: "xyz@mail.com", is_primary: true/false}], phone = [{value: "1234567890", is_primary: true/false}]
我想要的结果是这样的: 联系人没有在 DB 中表示,然后准备 obj 并插入到数据库中。
【问题讨论】:
-
什么是“lac”?你想用普通话还是德语回答你的问题;)?
-
那很抱歉。检查更新的问题:p
-
绝对是选项 2。
-
第二个选项是最好的。查看 1000 数据 1 到 1000 和 200 到 1000 数据的两个查询的响应时间
-
stackoverflow.com/help/on-topic: 要求我们推荐或查找书籍、工具、软件库、教程或其他场外资源的问题是题外话 我很乐意提供如果您解释您要达到的目标,这里有一个正确的答案。 “我想比较”既没有说明标准也没有说明比较的目的——你是否需要两个集合中相同文档的列表,其中一个集合中不存在的文档列表,具有共同属性但不是精确副本等的文档列表?请更新问题的详细信息。