繁体   English   中英

过滤 MongoDB 自动完成

[英]Filter MongoDB autocomplete

使用 MongoDb Atlas 搜索索引构建自动完成聚合管道时。 如何将自动完成功能限制为仅搜索特定 ID?

我正在构建搜索功能,用户可以在其中搜索人员,应用程序应自动完成搜索,但用户应该只被建议为允许查看的用户。

我的管道(有效但需要过滤):

{
  'compound': {
    'should': [{
      'autocomplete': {
        'query': "John",
        'path': 'firstName'
      }
    }, {
      'autocomplete': {
        'query': "Doe",
        'path': 'lastName'
      }
    },
    ]
  }
}

如果我有一组用户可以查看的人 ID:s,我如何仅对具有我提供的 ID:s 的人应用自动完成搜索?

类似于 {_id: {$in myIdList}}

您可以使用等于运算符来匹配 ObjectID。 具体来说,在您当前复合查询的 must 子句中,嵌套另一个复合查询,其中每个 ObjectID 有 1 个您要过滤的 should 子句。 每个 should 子句将被定义为特定 ObjectID 的等于运算符。 如果需要,我可以提供一个示例,说明它的外观。 另外,提醒一下,包含 ObjectID 数组的字段需要在 Atlas Search 中建立索引,以便您可以在其上使用 equals 运算符。

我会考虑在您的复合查询中添加一个过滤器子句,如下所示:

{
  'compound': {
    'filter': {
      text': {
        'query': userId,
        'path': 'userId'
      }
    }
    'should': [{
      'autocomplete': {
        'query': "John",
        'path': 'firstName'
      }
    }, {
      'autocomplete': {
        'query': "Doe",
        'path': 'lastName'
      }
    },
    ]
  }
}

有一个很好的例子 在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM