MongoDB - 领域(聚合 $search 文本)需要一个具有搜索文档级权限的角色来执行 $search

MongoDB - Realm (aggregation $search text) needs a role with search document-level permission to perform a $search

我正在尝试使用 Realm 作为我的无服务器身份验证器和函数服务器对我的 MongoDB 进行全文查询。 在 Realm 中,我制作了一个可以从客户端调用的函数来执行此查询。该函数如下所示:

exports = function( jobName,collection="jobs"){
  const agg = [
   {
    '$search': {
      'text': {
        'path': [
          'name', 'description'
        ],
        'query': jobName,
        'fuzzy': {}
       }
     }
   }
   ];
   var collectionObj = context.services.get("mongodb-atlas").db("myDb").collection(collection);
   var result = collectionObj.aggregate(agg)
   return result;
};

如果我 运行 作为系统用户使用此功能,我将从数据库中得到我想要的东西。但是如果我想 运行 作为匿名用户进行搜索,我会收到以下错误:

A role with a search document-level permission is required to perform a $search

所以我去了我的角色,我创建了一个名为 normal 的角色,具有文档级搜索权限: User

错误仍在发生,我不知道该往哪里找。用户中的高级选项还显示搜索字段已变为 true:

  {
  "name": "normal",
  "apply_when": {},
  "insert": false,
  "delete": false,
  "search": true,
  "read": true,
  "fields": {
    "description": {},
    "name": {}
  },
  "additional_fields": {}
}

所以有一种方法可以通过客户端的领域使用全文功能,但它涉及创建一个开放的 REST API。我们可以创建一个 REST API 和 return 从该入口点开始的搜索,而不是通过客户端调用函数。 MongoDB 的 Karen Huaulme 在她 Movie Tutorial 身上做了类似的事情。这确实不是我所希望的答案,但它是一个很好的解决方法。