4

Mongo DB:配列の最初と最後の要素の両方を返す1つのクエリを作成しようとしています。私はこの複数のクエリを実行できることを認識していますが、実際には1つで実行したいと思います。

各オブジェクトに数値の配列「arr」があるコレクション「テスト」を想定します。

 db.test.find({},{arr:{$slice: -1},arr:{$slice: 1}});

これにより、次のようになります。

 { "_id" : ObjectId("xxx"), "arr" : [ 1 ] }    <-- 1 is the first element

結果をエイリアス化する方法はありますか?ASmysqlキーワードがクエリで許可するものと似ていますか?

4

2 に答える 2

0

これは現時点では不可能ですが、機能要件を正しく理解していれば、現在開発中のAggregationFrameworkで使用できるようになります。

ただし、そもそもこの要件があるかどうか、スキーマについて疑問に思う必要があります。それに応じてスキーマを変更することで、これを機能させるためのより洗練された方法はありませんか?

于 2012-04-16T08:09:48.190 に答える
0

$firstこれは、演算子を使用して、$last次のように集計フレームワークで実行できます。

db.test.aggregate([
    { '$addFields': {
        'firstElem': { '$first': '$arr' },
        'lastElem': { '$last': '$arr' }
    } }
])

または$sliceとして使用

db.test.aggregate([
    { '$addFields': {
        'firstElem': { '$slice': [ '$arr', 1 ] },
        'lastElem': { '$slice': [ '$arr', -1 ] }
    } }
])
于 2021-06-30T13:21:49.673 に答える