类似于
- 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,但对于一个简单的用例来说似乎太高级了。
非常感谢任何帮助!
答案 0 :(得分:2)
尚未测试此代码,但它应该可以正常工作。
假设存储它的数据库名称为tastyFruits
...
tastyFruits.find({}).forEach(function(a){
console.log("Date: " + a.date);
console.log("Pear rating: " + a.fruit_ranking.indexOf("Pear"));
});