Mongoid:按顺序检索对象

发布于 2024-10-16 12:11:25 字数 218 浏览 2 评论 0原文

认为:

提及=["2","1","3"]

未排名= User.where(:nickname.in =>提及).map

输出与提供的数组中的顺序不匹配

输出是随机的=> 3, 1, 2

我想要它按照原始数组=> 2, 1, 3

Suppose:

mentions=["2","1","3"]

unranked = User.where(:nickname.in => mentions).map

The output does not match the ordering in the provided array

output is random => 3, 1, 2

i want it as per the original array => 2, 1, 3

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

高冷爸爸 2024-10-23 12:11:25

我遇到了同样的问题,我这样解决了它:这

mentions=["foo","bar","baz"]

ranked = User.where(:nickname.in => mentions).sort do |a, b|
  mentions.index(a.nickname) <=> mentions.index(b.nickname)
end

并不是最优雅的解决方案,因为我是在应用程序中排序而不是在数据库引擎上排序,但是嘿..它可以工作(在小列表上) 。

I had the same problem, I solved it like this:

mentions=["foo","bar","baz"]

ranked = User.where(:nickname.in => mentions).sort do |a, b|
  mentions.index(a.nickname) <=> mentions.index(b.nickname)
end

Not really the most elegant solution since I'm sorting in the application and not on the database engine but hey.. it works (on small lists).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文