Как найти значение в коллекции mongoDB, независимо от имени поля? - PullRequest
0 голосов
/ 28 сентября 2010

Предполагая такую ​​коллекцию:

People
{
    "name": "John Doe",
    "email": "John Doe <john@doe.com>",
    "stuff": "foo"
    "morestuff": "bar"
},
{
    "name": "Homer Simpson",
    "email": "Homer Simpson <homer@simpson.tv>",
    "stuff": "bar"
    "morestuff": "foo"
},
{
    "name": "Bart Simpson",
    "email": "Bart Simpson <bart@simpson.tv>",
    "stuff" : "foo"
    "morestuff": "foo"
    "evenmore": ["bar", "foo", "baz"]
}

Какой может быть лучший способ найти все вхождения строки 'foo' (точно, без подстроки), где бы она ни происходила? Я хотел бы обновить все вхождения строки 'foo' до какой-либо другой строки или удалить ее из документа в коллекции.

Я знаю, что это может выглядеть как плохой дизайн базы данных, я просто хочу прояснить, что я хотел бы сделать :)

1 Ответ

1 голос
/ 28 сентября 2010

Нет запроса, который бы это делал.

В общем случае вам придется перебирать все документы и просматривать все свойства.

Если вы можете ограничить возможное свойствоключи, вы можете построить запрос, как

name = 'foo' or email = 'foo' or stuff ='foo'
  or morestuff = 'foo' or evenmore = 'foo'

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

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