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 身上做了类似的事情。这确实不是我所希望的答案,但它是一个很好的解决方法。
我正在尝试使用 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 身上做了类似的事情。这确实不是我所希望的答案,但它是一个很好的解决方法。