我是很新的NoSQL和奮力寫這個查詢 我對Node.js的查找基於集團的貓鼬
我想實現的是用貓鼬得到一個最新的結果最新記錄基於集團的設備ID。我在SQL中編寫這個函數沒有問題,但是在NoSQL中很難做到這一點。
這裏是模型設置
_id DeviceID Coordinate:{lat, long}
1 2 lat: 1, long: 2
2 3 lat: 2, long: 3
3 1 lat: 3, long: 3
4 3 lat: 5, long: 4
5 2 lat: 7, long: 5
6 2 lat: 9, long: 6
7 3 lat: 111, long: 7
8 2 lat: 113, long: 8
,我想輸出是:
_id DeviceID Coordinate:{lat, long}
3 1 lat: 3, long: 3
7 3 lat: 111, long: 7
8 2 lat: 113, long: 8
這是我已經試過,但我已經得到的結果是undefined
注:beginDayID
,endDayID
是mongoose的變量ObjectId表示開始和結束日期的_id。
mongoose.model('GPSData').aggregate([
{$match: {_id:{$gte: beginDayID, $lt: endDayID}}},
{$unwind: "$Coordinates"},
{$project: {DeviceID: '$DeviceID' }},
{$group: { DeviceID: '$DeviceID', $lat: '$Coordinates.lat', $long: '$Coordinates.long'}}
], (e, data) => {
console.error(e)
console.log(data)
if (e) return callback(e, null);
return callback(null, data);
})
請參閱我的答案 - 如果它不適用於您,請顯示一些真實的示例文檔和預期輸出,以便我們可以更具體 – DAXaholic