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

Опция за проекция за връщане на дължина/размер на полето

.find() не "променя" върнатите документи по никакъв начин. Можете само да „включите“ или „изключите“ в проекцията.

Единствените неща, които „променят“ са .aggregate() или .mapReduce() .

За .aggregate() , изисква MongoDB 3.4 за $strLenCP или $strLenBytes , но обикновено имате предвид първото:

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

За .mapReduce()

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

И реалистично в последния случай, вие също може да повторите курсора и може да се наложи, освен ако колекцията не е достатъчно малка или всъщност можете да извеждате към друга колекция вместо това.

$size операторът, който се опитвате да използвате, се отнася само за "масиви", за да върне броя на наличните записи. И отново, това е валидно само за използване с .aggregate() метод.

Ако искате да пропуснете знаци като space в рамките на низ, след това $split и $reduce с $concat може да се приложи:

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

Или отново с 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. Как да преименувате пътя в отговор на попълване

  2. Намерете елемент въз основа на две стойности

  3. Javascript API от страна на клиента на Mongodb

  4. Защо mongoDB използва objectID?

  5. Възможно ли е да се получат полетата в реда на проекция в Aggregation Frameworks mongo