Как использовать SQL LIKE в MongoDB и Node Express? - PullRequest
0 голосов
/ 02 октября 2018

Я хочу найти событие, используя частичную или полную букву.Частичная буква может быть в начале, в середине или в конце события.

Для пример :

Событие: вручение приза

Должно отображаться, когда введите: "pri" (первые буквы) или "giv" (средние буквы) или "ing" (последние буквы)

Ниже приводится Event model

const mongoose = require('mongoose');

const EVENT_SCHEMA = mongoose.Schema({
    title: { type :String,required: true },
    description: { type :String,required: false },
    type: { type: String, required: true },
    status: { type: String, required: true },
    start_datetime: { type: Date, required: true },
    end_datetime: { type: Date, required: true },
    user_id:{ type:mongoose.Schema.Types.ObjectId,ref : 'User', required: true },
    is_deleted:Boolean
},
{
    timestamps:true,
});

module.exports = mongoose.model('Event', EVENT_SCHEMA);

Я пытался, но не получилось:

router.get("/event/:user_id", (req, res) => {

  const user_id=req.params.user_id;
  console.log(user_id);

  User_impression.aggregate([
    {$match:{"impression_type":"like"}},

   {$group: { "_id": "$event_id","user_id":{"$first":"$user_id"},"impression_type":{"$first":"$impression_type"},count: { $sum: 1  }}},
   {$lookup: { from: "events", localField: "_id", foreignField: "_id",as: "event_doc"}},
   {$lookup: { from: "users", localField: "event_doc.user_id", foreignField: "_id",as: "user_doc"}},
   //{$match:{$and :[{"event_doc.is_deleted":false},{"event_doc.public":true},{"event_doc.title":{"$regex": search, "$options": "i"}}]}},
   {$project :{"Event_id":"$_id","likes":"$count","impression_type":"$impression_type","user_id":"$user_id","islike":{$cond: { if: { $in: [ "$_id", "$event_doc._id"] }, then: "Yes", else: "No" } },"User_doc":"$user_doc","event_doc":"$event_doc"}},


    ], function (err, result) {
        if (err) {
            res.send(

                setting.status(validation.NOT_FOUND,"False","No data found",err)

            );
        }else
        {   
      results=result;
      console.log("$_id")
            res.send(

                setting.status(validation.SHOW,"True","data found",result)

            );
        }
    });
});
...