該功能將幫助您實現此功能尚不可用。但是,會有一個新的聚合運算符爲給定的索引提供數組元素。新的表達式稱爲$arrayElemAt
使用新的聚合運算符的可用MongoDB的版本3.2.X
和更高,這將返回給定索引的數組元素。新的表達被稱爲$arrayElemAt
。它有兩個參數,一個數組和一個索引,並返回數組中給定索引處的元素。負數索引被接受爲數組後部的索引。如果索引超出範圍時,它返回缺失值,這意味着該字段將不會在輸出存在:
var pipeline = [
{ $match : {"geo" : {$ne: null}}},
{
$project: {
_id: "$id_str",
lat: { $arrayElemAt: ['$geo.coordinates', 0] },
lon: { $arrayElemAt: ['$geo.coordinates', 1] }
}
}
];
作爲一種變通方法爲現在(假設座標陣列將總是具有在任何給定時間兩個要素),你可以試試下面的聚集管道將採取$first
和$last
組蓄電池運營商的優勢後$sort
獲得的元素:
var pipeline = [
{$match : {"geo" : {$ne: null}}},
{ "$unwind": "$geo.coordinates" },
{ "$sort": {"geo.coordinates": 1} } ,
{
"$group": {
"_id": "$_id",
"lat": { "$first": "$geo.coordinates" },
"lon": { "$last": "$geo.coordinates" }
}
}
];