提高一个字段与多个集合比较的效率 Mongodb Jdbc

Posted

技术标签:

【中文标题】提高一个字段与多个集合比较的效率 Mongodb Jdbc【英文标题】:Increase efficiency in comparing one field with multiple collection Mongodb Jdbc 【发布时间】:2013-10-31 11:22:43 【问题描述】:

嗨,我有一个 SQL 查询,我正在尝试使用 MongoJava 驱动程序 Jdbc [2.10] 在 MongoDB 中实现它。我的sql查询是,

SELECT DISTINCT table1.id FROM table1,table2 WHERE table1.x = table2.x and 
table1.y IN ( somevalue ) AND  table2.y IN (somevalue)

在 MongoDB 中,我有 Table1 集合和 Table2 集合。使用 Jdbc 我创建了两个对象来访问两个集合。考虑我在每个集合中有 1 条缺失记录。如果我尝试将每个单个文档值与另一个集合进行比较,则需要 1 次缺失 * 1 次缺失比较。 ??之后我想用'y'值匹配它??

谁能建议我如何有效地将这个查询转换为 MongoDB jdbc 查询??

谢谢

【问题讨论】:

【参考方案1】:

mongdb 不支持这样的连接,因此您需要执行多个查询。可能是这样的:

db.collection1.distinct( 'id', y: $in: [...] )

然后获取这些 ID 并对 collection2 执行另一个 $in 查询。

不过,我不得不问为什么你会有一个没有唯一 ID 的表。

【讨论】:

【参考方案2】:

使用经典 RDBMS,您可以对基础进行建模,然后编写查询。

对于 MongoDB,情况往往相反:您列出您的用例,即访问模式,然后根据您的需要对数据进行建模。

【讨论】:

【参考方案3】:

Mongo Java 驱动程序不支持 SQL 或 JDBC API。 MongoDB 不支持连接。如果您想使用 SQL,可以使用 JDBC 驱动程序:JDBC Driver for MongoDB。您还可以通过使用嵌套将两个集合合并为一个来避免连接。

【讨论】:

以上是关于提高一个字段与多个集合比较的效率 Mongodb Jdbc的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB 索引

MongoDB中索引的创建和使用详解

MongoDB创建文本索引

mongodb - 时间序列集合(time series collection)

MongoDB 一个复合索引与多个单字段索引

MongoDB - 查找 - 多个集合 - 结果在一个数组中