如何使用MongoDB ex:name中的自定义字段而不是id对分页进行索引和排序

如何使用MongoDB ex:name中的自定义字段而不是id对分页进行索引和排序,mongodb,Mongodb,我已经浏览了上面链接中解释的两种场景,它说按对象id排序在检索和排序结果时具有良好的性能。我希望为自己的自定义字段名编制索引,而不是使用对象id进行默认排序,公司希望对这两个字段进行排序和分页这两个字段都包含字符串值 我不知道我们如何使用gt或lt作为名称,目前在如何解决此问题以在用户按名称排序时提供分页方面被阻止 如何为两个字段编制索引和分页?问题的答案是 对于分页解释,您在问题上共享的链接已经足够好了。前 db.Example.find({name = "John", country = "

我已经浏览了上面链接中解释的两种场景,它说按对象id排序在检索和排序结果时具有良好的性能。我希望为自己的自定义字段名编制索引,而不是使用对象id进行默认排序,公司希望对这两个字段进行排序和分页这两个字段都包含字符串值

我不知道我们如何使用gt或lt作为名称,目前在如何解决此问题以在用户按名称排序时提供分页方面被阻止

如何为两个字段编制索引和分页?

问题的答案是

对于分页解释,您在问题上共享的链接已经足够好了。前

db.Example.find({name = "John", country = "Ireland"}). limit(10);
用于分类

db.Example.find().sort({"name" = 1, "country" = 1}).limit(userPassedLowerLimit).skip(userPassedUpperLimit);
如果用户请求在按名称排序后提取21-30份第一批文档,则按升序提取国家/地区

db.Example.find().sort({"name" = 1, "country" = 1}).limit(30).skip(20);
基本了解MonogDB中的索引 索引支持在MongoDB中高效执行查询。如果没有索引,MongoDB必须执行集合扫描,即扫描集合中的每个文档,以选择与查询语句匹配的文档。如果查询存在适当的索引,MongoDB可以使用该索引限制它必须检查的文档数量

索引是特殊的数据结构,以易于遍历的形式存储集合数据集的一小部分。索引存储特定字段或字段集的值,按字段值排序

默认id索引

MongoDB在创建集合期间在_id字段上创建唯一索引。_id索引防止客户端为_id字段插入两个具有相同值的文档。不能将此索引放到_id字段中

创建索引

要在Mongo Shell上执行的语法

db.collection.createIndex( <key and index type specification>, <options> )
对于升序使用1,对于降序使用-1

上述富查询仅在同一规范的索引不存在时创建索引

索引类型

MongoDB提供不同的索引类型来支持特定类型的数据和查询。但我想提到两种重要的类型

一,。单场 除了MongoDB定义的id索引外,MongoDB还支持在文档的单个字段上创建用户定义的升序/降序索引

二,。复合指数 MongoDB还支持多个字段上的用户定义索引,即复合索引

复合索引中列出的字段顺序具有重要意义。例如,如果复合索引由{name:1,company:1}组成,则索引首先按名称排序,然后在每个名称值内按公司排序


我的理解和回答以及了解更多关于MongoDB索引的资料来源

在mogoDB中,集合名称使用所有小写字母只是一种命名约定。使用示例而不是示例用户将请求所有具有用户定义分页大小的行的问题。它不仅仅是搜索单个名称。如何基于名称列进行排序并对结果进行分页。名称字段不能使用gt或ls。我们建议。我的意思是,我们不能为名称字段选择方法2,尽管方法2的性能非常好,但我们不知道如何为其他类似于id的字段实现它field@bhauhoysala…根据上面的链接,如果我们对用户使用跳过和限制,将影响性能。是这样吗?不,当列不是id列时,除了使用skip和limit之外,我们没有其他方法……该链接说,如果使用skip和limit,将是一个严重的性能问题。请advise@JavaDeveloper我认为没有任何其他方法可以在不使用limit和跳过使用rich query的情况下实现分页。当我们在与find、sort、limit和skip函数一起使用的字段上添加索引时,它在一定程度上有助于提高性能。
db.Example.find().sort({"name" = 1, "country" = 1}).limit(30).skip(20);
db.collection.createIndex( <key and index type specification>, <options> )
db.collection.createIndex( { name: -1 } )