0

に基づいてMongoDBでソートする方法はあり$elemMatchますか?たとえば、次のようなドキュメントがあります。

{
    'user': ObjectId('fsdfsdf'),
    ...
    'array_of_things': [
        {
            'attribute_1': ObjectId('sdfsdfsd'),
            'attribute_2': ObjectId('sdfsfsdf'),
            'value': 30000
        },
        {
            'attribute_1': ObjectId('dfdfgfdg'),
            'attribute_2': ObjectId('gdfgdfgd'),
            'value': 100
        },
        {
            'attribute_1': ObjectId('mbnmbbmb'),
            'attribute_2': ObjectId('mbnmbnmb'),
            'value': 2000
        },
        ...
    ]
}

フィールド内の一致する要素に基づいてこのデータをクエリできる必要がありarray_of_thingsます(これは)で十分に単純$elemMatchです。この問題は、特定の属性に一致する値(昇順または降順)で並べ替えることもできる必要があるために発生します。たとえば、クエリは次のようになります。

{
    'user': ObjectId('fsdfsdf'),
    'array_of_things': {
        $elemMatch: {
            'attribute_1': ObjectId('dfdfgfdg'),
            'value': {
                $gt: 1
            }
        }
    }
}

のみで並べ替えるvalue(たとえば、最初sort({ 'array_of_things.value': -1 })に一致しない、任意の配列要素のすべての値でのみ並べ替える) attribute_1

これを行う方法はありますか?

これがすでに質問されている場合はお詫びしますが、調べてみると解決策が見つからないようです。

4

1 に答える 1

3

これは現在、標準のクエリ言語では不可能です。集約フレームワークを使用すると、(潜在的に)パフォーマンスがいくらか低下します。

于 2012-12-14T14:40:07.370 に答える