这个想法是将一种行号返回给mongodb聚合命令/管道。类似于我们在RDBM中所做的。在mongodb聚合命令/管道中添加某种行号
它应该是一个唯一的数字,如果它完全匹配一行/数字就不重要。
对于这样的查询:
[ { $match: { "author" : { $ne: 1 } }} , { $limit: 1000000 } ]
返回:
{ "rownum" : 0, "title" : "The Banquet", "author" : "Dante", "copies" : 2 }
{ "rownum" : 1, "title" : "Divine Comedy", "author" : "Dante", "copies" : 1 }
{ "rownum" : 2, "title" : "Eclogues", "author" : "Dante", "copies" : 2 }
{ "rownum" : 3, "title" : "The Odyssey", "author" : "Homer", "copies" : 10 }
{ "rownum" : 4, "title" : "Iliad", "author" : "Homer", "copies" : 10 }
是否有可能产生这样的rownum在MongoDB中?
不,这是不可能的。你可能会更好地解释*“为什么你认为你需要这个”*。它通常用于SQL实现窗口化分页结果,比如项目排序。如果您想解释您的用例,可能还有其他选择。 –
这是一个改进 - 当数据量很大时(> 100mio),在使用MongoDB数据源获取数据的BI工具上使用id作为字符串真的是一个坏主意。除非... – ic3
将数字添加到MongoDB中的行(您无法做到这一点)意味着要通过所有结果/数据(大概在选择“页面”之前)并一次分配一行。所以,由于架构的作用方式决不会有任何改进。我给你的选择。 1.接受“不能完成”。 2.解释你的用例,并可能给出一个比迄今为止能够想到的更好的替代方法。正如我所看到的,一个是死路一条,另一个可能只是去某个地方。 –