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

MongoDB $ltrim

В MongoDB, $ltrim Операторът на тръбопровода за агрегиране премахва празно пространство от началото на низ. Това включва нулевия символ.

Може също да премахне всеки посочен знак. Например, можете да го използвате, за да премахнете всички знаци за тире (- ) от началото на низ.

Пример

Да предположим, че имаме колекция, наречена pets със следния документ:

{ "_id" : 1, "name" : "-Wag", "type" : "   Dog   ", "weight" : 20 }

Можем да видим, че type полето включва празно пространство от двете страни на думата Dog . Можем да използваме $ltrim оператор, за да върне това поле с премахнато празно пространство от лявата част на низа.

Пример:

db.pets.aggregate([
  { 
    $project: { 
      name: 1, 
      type: { $ltrim: { input: "$type" } } 
    } 
  }
])

Резултат:

{ "_id" : 1, "name" : "-Wag", "type" : "Dog   " }

Както се очакваше, type полето е върнато без празното пространство в началото. Пробелът в края все още остава.

Можете също да използвате $rtrim оператор за отрязване на дясната част от низа и $trim оператор за отрязване на двете страни на низа.

Има доста знаци, които MongoDB счита за символи за интервали. Вижте MongoDB Whitespace Characters за пълен списък.

Отрежете други знаци

$ltrim операторът приема chars параметър, който ви позволява да посочите кои знаци да отрежете.

Пример:

db.pets.aggregate([
  { 
    $project: {
      name: { $ltrim: { input: "$name", chars: "-" } } 
    } 
  }
])

Резултат:

{ "_id" : 1, "name" : "Wag" } 

В този случай включихме chars параметър с тире (- ), което доведе до премахване на тирето от началото на думата.

Отрязване на няколко знака

Можете да отрежете няколко знака, като ги включите всички в chars аргумент.

Пример:

db.pets.aggregate([
  { 
    $project: { 
      name: { $ltrim: { input: "$name", chars: "W-" } } 
    } 
  }
])

Резултат:

{ "_id" : 1, "name" : "ag" } 

В този случай предоставих два знака като мои chars аргумент и два от тези символа се оказаха в началото на низа. Следователно тези два знака бяха подрязани.

Въпреки това, бъдете внимателни, когато правите това. Ето какво се случва, когато включа всички знаци:

db.pets.aggregate([
  { 
    $project: { 
      name: { $ltrim: { input: "$name", chars: "W-ag" } } 
    } 
  }
])

Резултат:

{ "_id" : 1, "name" : "" }

Целият низ е изчезнал. Той е отрязал не само - и W от низа, но също така е премахнал a и g знаци.

Подрязване на числа

$ltrim операторът работи върху низове. Ако се опитаме да отрежем weight поле получаваме грешка. Това е така, защото weight полето е число, а не низ.

db.pets.aggregate([
  { 
    $project: { 
      name: 1, 
      weight: { $ltrim: { input: "$weight", chars: "2" } } 
    } 
  }
])

Резултат:

Error: command failed: {
	"ok" : 0,
	"errmsg" : "$ltrim requires its input to be a string, got 20 (of type double) instead.",
	"code" : 50699,
	"codeName" : "Location50699"
} : aggregate failed :
[email protected]/mongo/shell/utils.js:25:13
[email protected]/mongo/shell/assert.js:18:14
[email protected]/mongo/shell/assert.js:618:17
[email protected]/mongo/shell/assert.js:708:16
[email protected]/mongo/shell/db.js:266:5
[email protected]/mongo/shell/collection.js:1046:12
@(shell):1:1

Грешката ни казва, че сме предоставили двоен и че $ltrim операторът изисква въвеждането му да бъде низ.

Ако наистина искаме да премахнем 2, първо трябва да го преобразуваме в низ. Можем да направим това или с $convert или $toString оператор.

Пример:

db.pets.aggregate([
  { 
    $project: { 
      name: 1, 
      weight: { $ltrim: { input: { $toString: "$weight" }, chars: "2" } }
    }
  }
])

Резултат:

{ "_id" : 1, "name" : "-Wag", "weight" : "0" } 

Можем да го върнем към двоен, като използваме или $convert или $toDouble оператор.

Пълен пример:

db.pets.aggregate([
  { 
    $project: { 
      name: 1, 
      weight: { $toDouble: { $ltrim: { input: { $toString: "$weight" }, chars: "2" } } }
    }
  }
])

Резултат:

{ "_id" : 1, "name" : "-Wag", "weight" : 0 }

  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Разбиране на ограничението за размера на документа на MongoDB BSON

  2. MongoDB / Pymongo заявка с дата и час

  3. Сървърът на MongoDB все още може да бъде достъпен без идентификационни данни

  4. Съхранявайте изображение в MongoDB с помощта на Node.js/Express и Mongoose

  5. Как да дефинирате обект в масив в схема Mongoose правилно с 2d geo индекс