小编Sto*_*its的帖子

在 MongoDB 中查询两个集合以获取分页搜索结果的最有效方法是什么

这是场景:

  • 有两个合集
  • 第一个集合与第二个集合具有一对多关系。第二个集合与第一个集合是一对一的。
  • 查询3个字段,全部为索引
  • 其中 2 个索引位于第一个集合,1 个位于第二个集合
  • 结果需要支持分页

目前我能想到的最好的方法是使用聚合。这些阶段看起来像这样:

聚合 -> 匹配第一个集合中的 2 个索引值 -> 排序 -> 使用与两个集合中的关系属性都匹配的管道进行查找,并根据第二个集合中的索引值的潜在搜索值进行匹配 ->与 OR 匹配,使用正则表达式查看第一个集合中的 2 个搜索字段,或者查找中的项目是否包含任何结果 -> 限制 -> 具有值的项目

令人担忧的是,搜索将在查找过程中对第一个集合中的所有文档与第二个集合中的所有文档进行联接。请记住,搜索的所有内容都是索引,但查找是这里主要关注的问题。建议以正确的方式做到这一点?更好的方法?

代码示例:

db.collection1.aggregate( [
    { 
     $match: { // initial filters based on indexed values
        field1: "somevalue", 
        field2: "somevalue" 
     },
    },
    {
        $sort: {
            firstSortField: -1, _id: -1 // sort results by needed order
        }
    },
    {
    $lookup: // join with another collection to search on a specific value
        {
        from: collection2,
        localField: …
Run Code Online (Sandbox Code Playgroud)

database mongoose mongodb nosql

6
推荐指数
1
解决办法
1718
查看次数

标签 统计

database ×1

mongodb ×1

mongoose ×1

nosql ×1