检索MongoDB中数组中项的索引

时间:2014-01-11 22:56:54

标签: mongodb mongoid mongodb-query mongoid3

类似于

- 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中以某种方式执行此操作并仅返回“Pear”的索引而不是整个Array,那么会加快我的应用程序的速度。

我调查了Map Reduce,但documentation似乎暗示你需要一个不起作用的缩减功能。

同时查看Aggregation framework,但此JIRA票据似乎表明尚未实施。

最后,我调查了Server Side Scripting,但对于一个简单的用例来说似乎太高级了。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:2)

尚未测试此代码,但它应该可以正常工作。

假设存储它的数据库名称为tastyFruits ...

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