MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Trường $ concat có chỉ mục trong $ map mongodb?

Mặc dù tôi chắc chắn khuyên bạn nên làm điều đó ở phía máy khách thay vì bên trong MongoDB, đây là cách bạn có thể có được những gì bạn muốn - khá thô bạo nhưng hiệu quả:

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. thay thế cho việc sử dụng 'await' với lazy_static! vĩ mô trong gỉ?

  2. Cách thực hiện truy vấn với cài đặt múi giờ trong Mongodb

  3. Chuyển đổi định dạng ngày giờ từ dịch vụ web thành một chuỗi

  4. Lưu trữ một hàm trên máy chủ bằng Java - MongoDB

  5. MongoDB:Có thể nắm bắt các sự kiện TTL với Change Stream để mô phỏng bộ lập lịch (cronjob) không?