2014-01-11 3 views
3

похож наПолучить индекс элемента в массиве в MongoDB

- Aggregation: add option to $unwind to emit array index

- Get index of an item within mongodb query

У меня есть этот случай использования.

вкуснейших Фрукты Рейтинг:

{"date": "Jan 1st", 
"fruit_ranking": ["Apple", "Orange", "Grape", "Kiwi", "Mango", "Pear"]}, 
{"date": "Jan 2nd", 
"fruit_ranking": ["Orange", "Grape", "Kiwi", "Pear", "Apple"]} 
..... 
{"date": "Dec 31st", 
"fruit_ranking": ["Kiwi", "Apple", "Grape", "Mango", "Pear"]} 

Я пытаюсь захватить рейтинг «Груша» на каждый день 1 янв - дек 31, и теперь мне нужно, чтобы захватить все массивы назад и сделать IndexOf в моем приложении. Быстрое ускорение моего приложения, если это возможно сделать в MongoDB и просто вернуть индекс «Груша» вместо всего массива.

Я просмотрел Map Reduce, но documentation, похоже, предлагает вам функцию сокращения, которая не работает.

Также просмотренный Aggregation framework, но этот билет JIRA, кажется, предлагает его еще не реализовано.

Наконец, я просмотрел Server Side Scripting, но он кажется слишком продвинутым для простого использования.

Любая помощь была бы принята с благодарностью!

ответ

2

Не проверял этот код, но он должен работать.

Предположив имя БД, где это хранится в это tastyFruits ...

tastyFruits.find({}).forEach(function(a){ 
console.log("Date: " + a.date); 
console.log("Pear rating: " + a.fruit_ranking.indexOf("Pear")); 
}); 
+0

Интересная концепция. К сожалению, только регистрирует индексы в журналах MongoDB, но фактически не возвращает индексы. пс. его print(), а не console.log() – makeshifthoop

+0

Если вы хотите вернуть индексы, просто нажмите эти оценки груши на массив и верните массив. Не уверен, какой язык вы используете, поэтому я не могу вам помочь. – mjkaufer

+0

Спасибо! Оно работает. Его немного отрывочно из-за проблем с инъекциями, но он работает и очень быстро. – makeshifthoop

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

  • Нет связанных вопросов^_^