【发布时间】:2016-05-12 12:03:53
【问题描述】:
这个想法是将一种行号返回给 mongodb 聚合命令/管道。类似于我们在 RDBM 中的内容。
它应该是一个唯一的数字,如果它与行/数字完全匹配并不重要。
对于这样的查询:
[ { $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 }
是否可以在mongodb中生成这个rownum?
【问题讨论】:
-
不,这是不可能的。你最好解释一下“你为什么认为你需要这个”。它通常用于分页结果的 SQL 实现中,例如在对项目进行排序时。如果您更愿意解释要解决的用例,可能还有其他选择。
-
这是一个改进——当数据量很大时,在从 MongoDB 数据源获取数据的 BI 工具上使用字符串作为 id 确实是个坏主意,> 100mio。没有真正的解决方法,除非...
-
向 MongoDB 中的行添加数字(无论如何您都不能这样做)意味着传递所有结果/数据(大概在选择“页面”之前)并一次分配一个。因此,由于架构做事的方式,绝不可能是一种改进。我给了你选择。 1.接受“不,不能做”。 2. 解释您的用例,并可能获得比您目前所能想到的更好的替代方法。在我看来,一个是死胡同,而另一个可能只是去某个地方。
标签: mongodb mongodb-query aggregation-framework row-number