2015-03-31 2 views
1

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

SQL должно быть что-то вроде этого: SELECT DISTINCT engine_type_id FROM cars Но я понятия не имею, как получить такое же поведение в Монго.

Благодарим заранее.

P.S. Я попытался использовать метод mongo distinct, но он возвращает массив отдельных engine_type_id вместо целых документов. Так что это не работает для меня, к сожалению.

+2

Посмотрите на это [POST] (http://stackoverflow.com/questions/12183444/getting-a-distinct- aggregation-of-a-array-field-through-indexes), который возвращает отдельные значения для любого файла, содержащего одно или несколько значений. поэтому в соответствии с вашими потребностями вам необходимо написать некоторые [агрегации] (http://docs.mongodb.org/manual/reference/method/db.collection.aggregate/). Узнайте больше о функциональности [mongodb distinct] (http://docs.mongodb.org/manual/reference/method/db.collection.distinct/). – Braj

+0

Какие документы имеют заданное значение 'engine_type_id', вы хотите с отличным значением' engine_type_id'? Один за отдельную ценность (какой?), Все они? Технически, простое получение всех документов в коллекции находит различные значения 'engine_type_id' вместе со всеми документами, имеющими эти значения, поэтому вам нужно быть более конкретными о том, что вы хотите. – wdberkeley

ответ

0

Мы можем использовать метод distinct с аргументы.

Вот как я получаю все идентификаторы: ids = db.cars .distinct("_id", "engine_type_id")

Далее я могу ударить дб со следующим запросом: db.cars.find({"_id": {$in: ids}})

Итак, вот и все!

Для тех, кто с помощью рубин с MongoMapper, пожалуйста, посмотрите здесь:

ids = MongoMapper.database.eval("db.cars.distinct('_id', 'engine_type_id'})") 
Car.where(_id: { :$in => ids }) 
0

Использование:

SELECT DISTINCT engine_type_id FROM cars 

в базе данных SQL будет возвращать только поле engine_type_id, что, если есть две машины с той же engine_type_id в другой столбец с именем цвета, но они имеют разные значения для этого столбца. Каково значение столбца цвета в результатах запроса?

+2

Это не ответ, а что такое колонка 'car'? Я не вижу его в своем вопросе – Sammaye

+0

Прошу прощения, потому что я не мог комментировать. Столбец цвета - это гипотетический столбец, который я использую, чтобы объяснить, что невозможно возвратить несколько столбцов, используя только этот запрос. – namelivia

Смежные вопросы