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

$ mapmongodbのインデックスを持つ$concatフィールド?

    MongoDB内ではなく、クライアント側でこれを行うことをお勧めしますが、必要なものを取得する方法は次のとおりです。かなり力ずくで機能します。

    db.collection.aggregate([
        // you should add a $sort stage here to make sure you get the right indexes
    {
        $group: {
            _id: null, // group all documents into the same bucket
            docs: { $push: "$$ROOT" } // just to create an array of all documents
        }
    }, {
        $project: {
            docs: { // transform the "docs" field
                $map: { // into something
                    input: { $range: [ 0, { $size: "$docs" } ] }, // an array from 0 to n - 1 where n is the number of documents
                    as: "this", // which shall be accessible using "$$this"
                    in: {
                        $mergeObjects: [ // we join two documents
                            { $arrayElemAt: [ "$docs", "$$this" ] }, // one is the nth document in our "docs" array
                            { "index": { $concat: [ 'INV-00', { $substr: [ { $add: [ "$$this", 1 ] }, 0, -1 ] } ] } } // and the second document is the one with our "index" field
                        ]
                    }
                }
            }
        }
    }, {
        $unwind: "$docs" // flatten the result structure
    }, {
        $replaceRoot: {
            newRoot: "$docs" // restore the original document structure
        }
    }])
    



    1. Node.jsとMongodb-TypeError:undefinedは関数ではありません

    2. リモートマシンからのPymongo接続タイムアウト

    3. mongodb-文字列またはObjectIdを使用してDBRefを構築します

    4. map / reduceは、多くのレコードの値のセットの中央値と最頻値を見つけるのに適切ですか?