Mongodb нечувствительный к регистру $ pull из массива - PullRequest
0 голосов
/ 06 июля 2018

У меня есть имя работодателя из коллекции mongodb, ниже приведены примеры документов

[{
"companyName" : "XYZ Corp",
"employee" : [
    {
        "name" : "john smith"
    },
    {
        "name" : "john doe"
    }
 ]
 },
 {
  "companyName" : "ABC Corp",
  "employee" : [
    {
        "name" : "Marco Doe"
    },
    {
        "name" : "Mark smith"
    }
  ]
  }]

Теперь я хочу написать запрос без учета регистра, я предоставлю companyName и имя сотрудника и хочу извлечь имя этого сотрудника из массива сотрудников. Я написал запрос как

db.employer.update({companyName: { '$regex': /^ABC Corp$/i }}, {$pull: {employee: {name: '/^mark smith$/i'}}})

Учтите, что имя сотрудника будет храниться в любом случае. Вышеупомянутый запрос не работает, он не извлекает имя соответствующего сотрудника mark smith из массива.

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Попробуй это.:)

db.employer.update(
  {
    companyName: { 
      '$regex': /^ABC Corp$/i 
    }
  }, 
  {
    $pull: {
      employee: {
        name: {
          regex: '/^mark smith$/i'
        }
      }
    }
  }
)
0 голосов
/ 06 июля 2018

Рассмотрим этот пример,

{ <field>: { $regex: /pattern/, $options: '<options>' } }

Вы также можете прочитать полную документацию или посмотреть другие примеры Mongodb regexp здесь.

Я думаю, что вы не просто ищете {field: /regex/i}, вам нужно указать каждое поле, которое использует регулярное выражение отдельно.

Следовательно, ваш код должен быть,

db.employer.update({companyName: { '$regex': /^ABC Corp$/i }}, {$pull: {employee: {name: {regex: /^mark smith$/i}}}})

Имя поля также будет искать в соответствии с регулярными выражениями.

Поскольку ваш код выше использовал только регулярное выражение в поле companyName, а не поле имени.

Кроме того, не забудьте удалить цитаты в шаблонах регулярных выражений. Записка из комментариев (спасибо, Джон).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...