0
我使用的貓鼬如下執行地理多邊形搜索:的Node.js,MongoDB的 - 貓鼬 - 計算平均值作爲GEO搜索的一部分
Location.find({
"location.coordinates": {
"$geoWithin": {
"$geometry": {
"type": "Polygon",
"coordinates": [
coords
]
}
}
}
}, cb);
這將返回一組記錄,如:
{
"_id": "544be0763cea87660ee9c989",
"rating": 5,
"__v": 0,
"create_date": "2014-10-25T17:40:06.167Z",
"location": {
"coordinates": [
-122.41941550000001,
37.7749295
],
"type": [
"Point"
]
}
},
{
"_id": "544be0763cea87660ee9c989",
"rating": 7,
"__v": 0,
"create_date": "2014-09-27T01:40:10.283Z",
"location": {
"coordinates": [
-122.41941550000001,
37.7749295
],
"type": [
"Point"
]
}
}
我還需要計算「評級」屬性的平均值。我知道Mongo有一個聚合框架,但我不確定這是否可以作爲初始搜索的一部分完成,或作爲輔助查詢,或者查看後處理結果。
任何人都可以建議嗎?
UPDATE:要清楚,我想返回當前的結果集,平均等級設置,如果可能的整個結果。
Neil,這確實非常有幫助,並感謝對流水線階段的額外評論。我在問題中沒有說清楚的一件事是,我想要返回當前記錄以及平均評分,也許作爲JSON的父節點。我怎樣才能返回? – Ben 2014-11-06 03:58:58
@Ben這是一個多次被問及的問題。你真的不應該。你可以把所有的東西都推到一個數組中,但是除非你知道你總是處理小的結果,否則這通常是不實際的。這可能會意外地導致16MB BSON限制很快被破壞。一般建議是如果需要並行運行兩個查詢。 – 2014-11-06 04:10:51
@Neil_Lunn - 明白。再次感謝您提供的信息。 – Ben 2014-11-06 04:18:11