Mongoose: Возможно ли выполнить запрос ко всем json, которые содержат подстроку?

#node.js #mongodb #mongoose #mongoose-schema

#node.js #mongodb #mongoose #mongoose-schema

Вопрос:

Я использую mongoose, и моя схема:

    const DeliverySchema = new mongoose.Schema({
    startPlace:{type: String,required: true},
    endPlace:{type: String,required: true},
    
});
  

Предполагая, что начальное и конечное поля содержат места в формате Google: улица и город. Возможно ли выполнить запрос, в котором указан только город и который возвращает все JSON, в начале или конце которых этот город указан в качестве подстроки?

Итак, если моя запись:

 startPlace:"Milano, MI, Italia",
endPlace:"Roma,RM,Italia"
  

И мой запрос имеет параметр:

 startPlace:"Milano"
  

Это возвращает мне JSON.

Большое вам спасибо.

Комментарии:

1. Пожалуйста, покажите запрос, если вы пробовали какой-либо из них ИЛИ где-то застряли. Возможно, вы захотите посмотреть на $regex

2. Попробуйте db.collection.find({ $or: [ { startPlace: new RegExp('Milano', 'i') }, { endPlace: new RegExp('Milano', 'i') } ] }, {});

Ответ №1:

 DeliverySchema.aggregate([
  {
    $match: {
      $or: [
        {
          startPlace: {
            $regex: "Milano, ?. , ?. "
          }
        },
        {
          endPlace: {
            $regex: "Milano, ?. , ?. "
          }
        }
      ]
    }
  }
])
  

Ответ №2:

 db.collection.aggregate([{
    $match: {
        $or: [{
                startPlace: {
                    $regex: ".*Milano.*"
                }
            },
            {
                endPlace: {
                    $regex: ".*Milano.*"
                }
            }
        ]
    }
}])
  

Игровая площадка Mongo