使用ROW_NUMBER()将复杂的DB2 SQL转换为mongo查询

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用ROW_NUMBER()将复杂的DB2 SQL转换为mongo查询相关的知识,希望对你有一定的参考价值。

我是MongoDB的新手,我正在尝试将现有的DB2查询转换为MongoDB。我正在使用Java来运行此查询。

当前DB2查询:

SELECT * FROM 
(SELECT MBI.*, ROW_NUMBER() OVER Order by PDATE DESC AS rownumber 
  FROM USER1.COLLECTION1 MBI, USER1.COLLECTION2 IC  
  WHERE MBI.VISIBILITY = 1 and MBI.MBOXID = '1234' 
    AND UPPER(MBI.MBOXITID) >= '1234555' 
    AND UPPER(MBI.CATEGORY) = 'S' 
    AND UPPER(MBI.Mimetype) = 'PDF' 
    AND UPPER(MBI.Psystemid) = 'TBA' 
    AND days(current date) - days(MBI.PDATE) < 20 
    AND MBI.MBOXITID = IC.ICONTENTID) AS FinalResult 

    WHERE rownumber BETWEEN 1 and 2 Order by PDATE DESC

我真的不确定如何获取MongoDB中的ROW_NUMBER详细信息。

你能帮我解决问题吗?

答案

@bharathiraja,希望你现在已完成迁移并找出了步骤。你必须将你的内部联接转换为mongodb查找运算符,然后删除空值(因为查找是left-outer-join-operator)。从您的查询看起来,您正在尝试使用row_number()进行分页。在Mongodb聚合框架中,在PDATE上完成排序后,您可以添加限制并跳过运算符以进行分页。

在Couchbase(我工作的地方),我们就像标准SQL一样构建了row_number()。查看。 https://blog.couchbase.com/on-par-with-window-functions-in-n1ql/

以上是关于使用ROW_NUMBER()将复杂的DB2 SQL转换为mongo查询的主要内容,如果未能解决你的问题,请参考以下文章

在 db2 中使用 row_number()

db2 OLAP函数使用

DB2 - 修改 SQL 数据

【DB2】SQL优化

DB2 中的合并查询

SQL 最近在分区上使用 row_number()