A continuación se muestra el código, también probé el método $regex, solo me da el error 'No puedo usar $regex'.
let query : any; if (data.search.length > 0) { query = { _id: new RegExp(`^${data.search}.*`), accountId }; } else { query = { accountId }; } const orders: any = await TEMPOrders.find(query) .lean() .exec();Simplemente puede usar ObjectId() para el campo mongoose _id para realizar consultas y el valor de búsqueda también debe ser un ObjectId, de lo contrario arrojará un error de cadena que debe tener una longitud de 12 bytes o 24 caracteres hexadecimales.
Como _id es la clave principal y define cada documento de forma única en la colección. Entonces ObjectId se usa para comparar o para consultar _id.
Importe ObjectId como se muestra a continuación:
var ObjectId = require('mongodb').ObjectId query = { _id: ObjectId(data.search), accountId };Para evitar este error, debe convertir a objectID y también agregar term()
var ObjectId = require(mongodb).ObjectId var id = (req.body.id).term(); db.col.findOne({'_id':ObjectId(id)},(err,doc)=>{ if(err){ console.log(err) }else{ console.log(doc) } })