MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

$concat поле с индекс в $map mongodb?

Въпреки че със сигурност бих ви препоръчал да направите това от страна на клиента, а не вътре в 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. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Трансформирайте клавиатурната карта във вектор с помощта на MongoDB рамка

  2. C# MongoDB сложна сериализация на класове

  3. Агрегиране на Mongo и MongoError:изключение:BufBuilder се опита да увеличи() до 134217728 байта, след ограничението от 64MB

  4. mongoengine.fields.ImproperlyConfigured:PIL библиотеката не е намерена

  5. Файловете на журнала присъстват в директорията на журнала, но стартират без активирано журналиране