[英]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.