2014-01-11 107 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月1日的排名 - 12月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日誌中的索引,但實際上並沒有返回索引。 PS。其打印(),而不是CONSOLE.LOG() – makeshifthoop

+0

如果要返回索引,只需按這些梨評級數組,並返回數組。不知道你在用什麼語言,所以我無法幫你。 – mjkaufer

+0

謝謝!有用。它有點簡單,因爲注入問題,但它的工作原理和超快速。 – makeshifthoop