我是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详细信息。
你能帮我解决问题吗?
答案 0 :(得分:1)
@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/