MongoDB 的“TOP N WITH TIES”
Posted
技术标签:
【中文标题】MongoDB 的“TOP N WITH TIES”【英文标题】:"TOP N WITH TIES" for MongoDB 【发布时间】:2015-06-12 14:41:07 【问题描述】:SQL Server 有一个方便的运算符"TOP N WITH TIES",它返回
两行或多行在有限的结果集中并列最后一位
例如,来自 10, 9, 8, 8, 2 的 TOP 3 WITH TIES
将返回 10, 9, 8, 8。
对于 MongoDB,TOP N WITH TIES
是否有等效的单查询?
我不能使用两个查询(第二个查询由第一个返回的最小值),因为我在 doesn't let you return more than one cursor from the same collection 的 Meteor 发布函数中运行查询。
【问题讨论】:
你需要什么样的光标?类似于.fetch
的输出好吗?它仍然可以通过稍微修改的更手动的发布方法来使用。使用不返回游标的聚合框架听起来确实可行。
fetch()
原样,失去反应性。
精确对您有多重要?为什么不返回 2*N 并在客户端上解决?
@DanDascalescu 不一定。您可以使用基本匹配所有观察者查询来检查新记录是否更改结果并相应地报告给客户端
【参考方案1】:
您不必返回子查询即可将其用作标准。这基本上与您在任何其他 SQL 引擎中必须做的事情相同。
var min = Collection.find(,limit:10, sort: rank: -1).fetch()[9].rank
return Collection.find(rank: $gte: min)
【讨论】:
一个简单的解决方案,只返回一个游标,但仍然运行两个查询。 这种事情永远是 2 个查询,任何数据库都无法在不查看所有文件的情况下知道哪些文件共享一个关系。只取决于它是否有语法糖浇头(sql server)。例如,查看 postgres 中的子查询:***.com/questions/9629953/…以上是关于MongoDB 的“TOP N WITH TIES”的主要内容,如果未能解决你的问题,请参考以下文章
win7 安装mongodb 怎么创建mongodb.log
Nodejs学习笔记--- 与MongoDB的交互(mongodb/node-mongodb-native)MongoDB入门
- mongodb/mongodb 1.2.0 需要 ext-mongodb ^1.3.0 -> 您的系统中缺少请求的 PHP 扩展 mongodb