Tengo un documento como:
{ id: string, blogCover:{ title: string }, published: boolean }Estoy usando $regex para crear un sistema de búsqueda de la siguiente manera:
app.post('/searchblogs',(req,res)=>{ var searchfield = req.body.query; TFBlog.find({"blogCover.title":{ $regex:searchfield, $options:'$i' }}).then((docs)=>{ res.send(docs); }); });Ahora quiero que los resultados de búsqueda solo incluyan documentos con publicado: verdadero
Usé $match como
TFBlog.find({"blogCover.title":{ $match : { published : true }, $regex:searchfield, $options:'$i' }}).then((docs)=>{ res.send(docs); });Esto da un error:
(node:16304) UnhandledPromiseRejectionWarning: Error: Can't use $match with String.Qué tengo que hacer ? hay alguna alternativa para lograr esto???
$match es una etapa en la consulta de aggregate() y no se puede usar en find() . Cambia tu código así:
TFBlog.find({ "blogCover.title": { $regex: searchfield, $options: 'i' }, "published": true }).then((docs) => { res.send(docs); });