MongoDB-Realm(聚合$search text)需要具有搜索文档级权限的角色才能执行$search
我试图使用Realm作为我的无服务器身份验证器和服务器函数对我的MongoDB进行全文查询。 在Realm中,我创建了一个可以从客户端调用的函数来执行此查询。函数如下所示:MongoDB-Realm(聚合$search text)需要具有搜索文档级权限的角色才能执行$search,mongodb,realm,full-text-search,serverless,Mongodb,Realm,Full Text Search,Serverless,我试图使用Realm作为我的无服务器身份验证器和服务器函数对我的MongoDB进行全文查询。 在Realm中,我创建了一个可以从客户端调用的函数来执行此查询。函数如下所示: exports = function( jobName,collection="jobs"){ const agg = [ { '$search': { 'text': { 'path': [ 'name', 'description'
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
因此,我转到我的角色,创建了一个名为“普通”的角色,具有文档级搜索权限:
错误仍在发生,我不知道在哪里继续查找。用户中的高级选项还显示搜索字段变为true:
{
"name": "normal",
"apply_when": {},
"insert": false,
"delete": false,
"search": true,
"read": true,
"fields": {
"description": {},
"name": {}
},
"additional_fields": {}
}
因此,有一种方法可以从客户端通过realm使用全文函数,但它涉及到创建一个开放的RESTAPI。我们可以创建一个RESTAPI并从该入口点返回搜索,而不是通过客户端调用函数。MongoDB的Karen Huaulme对她做了类似的事。这确实不是我所希望的答案,但这是一个很好的解决方法。因此,有一种方法可以从客户端通过realm使用全文函数,但它需要创建一个开放的RESTAPI。我们可以创建一个RESTAPI并从该入口点返回搜索,而不是通过客户端调用函数。MongoDB的Karen Huaulme对她做了类似的事。这确实不是我所希望的答案,但这是一个很好的解决办法