MongoDB найти путем сопоставления двух конкатенированных полей? - PullRequest
7 голосов
/ 20 февраля 2012

У меня есть коллекция MongoDB с полями firstName и lastName, мне нужно получить элементы, которые соответствуют определенным полным именам:

Есть ли простой способ написать запрос, который проверял бы, что:

firstName + " " + lastName IN ARRAY ()... ?

--- РЕДАКТИРОВАТЬ ---

Причина объединения заключается в том, что я не хочу, чтобы в результате получались задания на оплату счетов (учитывая, что они существуют), если у меня есть [bill, steve] для firstNames & [ворота, вакансии] для фамилии.

Спасибо!

Ответы [ 2 ]

1 голос
/ 21 февраля 2012

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

var names = "bill gates".split();
db.myCollection.find({firstName:names[0],lastName:names[1]});

Это также позволит MongoDB использовать индекс, если онопределено.

1 голос
/ 20 февраля 2012

Конечно, вы просто хотите:

db.myCollection.find({firstName:"bill",lastName:"gates"})

или есть конкретная причина для фактической конкатенации?

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