如何减少此 mongo 数据库查找查询中的执行时间?

How to reduce execution time in this mongo db find query?

像这样记录示例数据,

{
"_id" : ObjectId("62317ae9d007af22f984c0b5"),
"productCategoryName" : "Product category 1",
"productCategoryDescription" : "Description about product category 1",
"productCategoryIcon" : "abcd.svg",
"status" : true,
"productCategoryUnits" : [ 
    {
        "unitId" : ObjectId("61fa5c1273a4aae8d89e13c9"),
        "unitName" : "kilogram",
        "unitSymbol" : "kg",
        "_id" : ObjectId("622715a33c8239255df084e4")
    }
],
"productCategorySizes" : [ 
    {
        "unitId" : ObjectId("61fa5c1273a4aae8d89e13c9"),
        "unitName" : "kilogram",
        "unitSize" : 10,
        "unitSymbol" : "kg",
        "_id" : ObjectId("622715a33c8239255df084e3")
    }
],
"attributes" : [ 
    {
        "attributeId" : ObjectId("62136ed38a35a8b4e195ccf4"),
        "attributeName" : "Country of Origin",            
        "attributeOptions" : [],
        "isRequired" : true,
        "_id" : ObjectId("622715ba3c8239255df084f8")
    }
]
}

此集合已在“_id”中编入索引。没有子文档执行时间会减少,但所有文档字段都是必需的。

db.getCollection('product_categories').find({})

此集合包含 30000 条记录,此查询执行时间超过 30 秒。那么如何解决这个问题。有人问我更好的解决方案。谢谢

虽然问题不是很清楚,但您可以按照 this 文章了解一些最佳实践。

索引和复合索引将使它在每次查询时都使用缓存而不是扫描文档。 30.000 个文档对 MongoDB 来说不算什么,它可以在一秒钟内处理数百万个文档。如果这些字段是在查询的另一个繁重操作过程中填充的。

查看您的架构是否有效构建,或者您是否正在限制与服务器的连接。另一件需要考虑的事情是使用聚合管道仅投影您需要的字段。