私はMongoDB集約演算子を使用して最後のレコードを取得しようとしています(フィックスタイムである 'fixtm'に基づく)。各レコードには、デバイスID、fixtime、緯度、経度、スピードなどのその他の情報があります。私の下の集計は、各デバイスの最終レコードを返すようにうまく機能します。しかし、私は緯度、経度などの他のフィールドをどのように取得するのですか?私はlat: 1
のようなものを$プロジェクトリストに追加しようとしましたが、試したバリエーションの数に関係なく、他の値は表示されません。彼らはグループオペレータの_idフィールドなどに存在しないからだと思いますか?どんなポインタでも大変役に立ちます。私は上から取得しています何のおかげMongoDB集約 - グループ化、結果内の追加フィールドを選択
function() {
return db.gpspos.aggregate(
[
{
$sort: {
devid: 1,
fixtm: 1
}
}, {
$group: {
_id: "$devid",
lastData: {
$last: "$fixtm"
}
}
}, {
$project: {
_id: 0,
device_id: '$_id',
fixtime: '$lastData'
}
}
]
)
}
は私が私のMongoDB
{
"_id": {
"$oid": "5729dc83f5be2411fb28c7c3"
},
"devid": 5,
"devnm": "M.M (Samsung S3)",
"fixtm": 1462360893000,
"addr": "{address}",
"lat": 1.433775,
"lon": 103.7859717,
"spdkm": 0
}
でこの
{ "device_id" : 5, "fixtime" : 1462368405000, "speed": 70.3, "lat": 103.33434 }
{ "device_id" : 4, "fixtime" : 1462372097000, "speed": 70.3, "lat": 101.33434 }
文書の一例であるで探しています何
{ "device_id" : 5, "fixtime" : 1462368405000 }
{ "device_id" : 4, "fixtime" : 1462372097000 }
です
上記の結果を得ているいくつかのサンプル文書を含むように質問を編集できますか? – chridam
確かにchridam、done –