如何在 MongoDB 中针对其他集合数据进行排序

Posted

技术标签:

【中文标题】如何在 MongoDB 中针对其他集合数据进行排序【英文标题】:How can do sorting in MongoDB in respect to another collections data 【发布时间】:2019-08-04 05:32:43 【问题描述】:

我有三个收藏。

项目


_id

用户


_id

item_user_info


_id
item_id (FK item)
user_id (FK user)

我需要按优先级对项目集合中的文档进行排序,其中优先级为: - 如果 item_id 和传递的 user_id 的组合存在于 item_user_info 中,则优先级=1,否则为 0。

问题:查询将是什么?

如果你提出建议,我也可以修改架构,如果它会加快查询速度。

注意:用户和项目将及时增加数百万。

【问题讨论】:

【参考方案1】:

添加一个名为priority 的字段,在回调中填充它,根据您描述的规则将其设置为1 或0。检索数据时,按此字段排序。您也可以考虑在其上添加索引。

也就是说,您选择的架构不太适合 MongoDB。通过重新考虑管理关联的方式,您可能能够更有效地查询数据。

【讨论】:

感谢您的宝贵回复。您能否为这三个集合建议击球手模式。 这不是一个容易回答的问题,而且如果不了解有关您的应用程序的大量信息以及它试图实现的目标,就不可能回答这个问题。您可以从阅读这篇文章开始:mongodb.com/blog/post/…

以上是关于如何在 MongoDB 中针对其他集合数据进行排序的主要内容,如果未能解决你的问题,请参考以下文章

如何使用节点 js 对 mongoDB 中的集合内的数组进行排序

如何在 MongoDB 中对集合记录中的数组进行排序?

应该针对不同的排序和过滤条件创建哪些MongoDB索引来提高性能?

在 MongoDB 中,如何根据对象的值对对象进行排序?

在MongoDB中永久排序集合

如何在 MongoDB 中维护有序对象