MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Opsi proyeksi untuk mengembalikan panjang/ukuran bidang

.find() tidak "mengubah" dokumen yang dikembalikan dengan cara apa pun. Anda hanya dapat "menyertakan" atau "mengecualikan" dalam proyeksi.

Satu-satunya hal yang "diubah" adalah .aggregate() atau .mapReduce() .

Untuk .aggregate() , membutuhkan MongoDB 3.4 untuk $strLenCP atau $strLenBytes , tetapi biasanya yang Anda maksud adalah yang pertama:

db.documents.aggregate([
  { "$project": {
    "bodyLength": { "$strLenCP": "$body" }
  }}
])

Untuk .mapReduce()

db.documents.mapReduce(
  function() {
    emit(this._id, this.body.length)
  },
  function() { },
  { "out": { "inline": 1 } }
);

Dan secara realistis dalam kasus terakhir, Anda mungkin juga mengulangi kursor, dan mungkin perlu kecuali jika koleksinya cukup kecil atau Anda benar-benar dapat menampilkan ke koleksi lain sebagai gantinya.

$size operator yang Anda coba gunakan hanya berlaku untuk "array" untuk mengembalikan jumlah entri yang ada. Dan sekali lagi, ini hanya valid untuk penggunaan dengan .aggregate() metode.

Jika Anda bermaksud menghilangkan karakter seperti space dalam string maka $split dan $reduce dengan $concat dapat diterapkan:

db.documents.aggregate([
  { "$addFields": {
    "bodyLength": {
      "$strLenCP": {
        "$reduce": {
          "input": { "$split": [ "$name", " "] },
          "initialValue": "",
          "in": { "$concat": [ "$$value", "$$this" ] }
        }
      }
    }
  }}
])

Atau lagi dengan mapReduce() :

db.documents.mapReduce(
  function() {
    emit(this._id, "".concat.apply(this.body.split(" ")).length)
    // Or even
    // emit(this._id, this.body.split(" ").reduce((o,e) => o.concat(e),"").length)
  },
  function() { },
  { "out": { "inline": 1 } }
);



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Agregat dengan $sum di mongodb

  2. Apakah Moongoose 3.8.8 mendukung operator $position?

  3. Proyek MongoDB memperbarui catatan dalam array bersarang di kueri findAndModify

  4. Bekerja dengan PTVS, IronPython, dan MongoDB

  5. MongoDB:permintaan oleh @DBRef