sql >> データベース >  >> NoSQL >> MongoDB

$substrを使用したフィールドごとのMongodbグループ

    このリンクに基づいた汚いが機能する解決策があります http://www.kamsky.org/stupid-tricks-with-mongodb/ugly-way-to-parse-a-string-with-aggregation-framework では、なぜですか?

    文字列内の記号の位置を見つけるために、複雑な条件を作成して、文字列の各記号で一致する記号を確認することができます。これは基本的にindexOf関数の動作と似ています。

    function indexOf(field, character) {
        var array = [];
        var maxPos = 50;
        var searchStart = 0;
    
        array[maxPos]={"$cond":{"if":{"$eq":[{"$substr":[field,maxPos,1]},character]},"then":maxPos+1,else:0}};
    
        for ( var i=maxPos-1; i>searchStart-1; i-- ) {
             array[i]={"$cond":{"if":{"$eq":[{"$substr":[field,i,1]},character]},"then":i,"else":array[i+1]}}
        }
    
        return array[searchStart];
    }
    

    したがって、MongoDBリクエストは次のようになります:

    db.images.aggregate([ <query> ,
                 { $group: { _id: { $substr: ["$FileName", indexOf("$FileName", "_"), 999] }, files: { $push: "$$ROOT" } } },
                 { $sort: { UploadDate : -1 } }
            ])
    



    1. 2つの日付の間のオブジェクトを検索MongoDB

    2. Grails3.xでのMongoDBのインストールと使用

    3. ClusterControl1.5ドキュメント-新機能

    4. $graphLookupを使用してMongoDBのネストされたデータ構造をトラバースする