[英]How can I filter records by their ObjectID (_id) in Ag-grid
我正在使用 MongoDB 来存储我的记录,并正在使用 Ag-grid react 来显示它们。 网格有几列,包括记录的 ObjectID (_id)、名称、类型等。使用过滤器 agColumnTextFilter 适用于具有 columnDef 的名称和类型字段:
{
headerName: 'Column Name',
field: 'name',
filter: 'agTextColumnFilter',
},
然后导致此查询设置(使用包含过滤器选项):
case "contains":
qp[fieldName] = new RegExp(['.*', user input string, '.*'].join(''), 'ig');
这记录了正确的查询:
"query db { name: /.*query string.*/gi }"
并显示正确的行。 由于显示的 _id 也是一个字符串,我尝试了类似的方法:
{
headerName: 'ID',
field: '_id',
valueGetter: (params) => {
let id = params.data._id;
return id.slice(id.length-5); //only display last part of ID instead of entire thing
},
filter: 'agTextColumnFilter',
},
使用与上面相同的包含逻辑,将以下查询记录到控制台:
query db { _id: /.*_id segment.*/gi }
但是,在这种情况下不会返回任何行(即使应该返回行)。 我需要使用不同的逻辑还是当前的逻辑有问题? 任何建议表示赞赏。
编辑:结果即使 ID 显示为字符串,也需要将字符串转换为 ObjectID:
qp[fieldName] = new ObjectID(_id string)
问题是搜索特定 ID 的一部分将不起作用,因为它不是有效的 ID。 搜索完整 ID 有效,但也不理想。 如果有人对我如何过滤部分 ID 有任何想法,我将不胜感激。
您可能可以在显示部分 ObjectId 的列上设置 valueFormatter。 过滤将使用完整的 ObjectId 完成。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.