我有大量文档的集合,我需要使用各种不同的查询对其进行自定义搜索。每个 Document 都有布尔属性。我们称之为“isInTop”。我需要在所有查询中首先显示具有此属性的文档。是的。我可以轻松地在这个领域进行排序,例如:
.sort( { isInTop: -1 } );
并使用字段“isInTop”作为其中的最后一个字段创建适当的索引。但这将缓慢工作,因为mongo 中的索引最适合使用 unique fields。那么有没有解决方案在每个查询的顶部显示带有“isInTop”字段的文档?
我在这里看到两个解决方案。第一:设置需要在“未来”的_id之上的文档。如您所知,ObjectId 包含时间戳。所以我可以使用未来的时间戳创建 ObjectId 并使用自然顺序
第二:为需要在顶部的文件创建单独的集合。并首先在其中进行查询。
这个问题还有其他解决方案吗?哪个会更胖?
更新 我已经通过对代表排名的自定义字段进行排序来完成这个问题。