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

sql 'like' операции върху числа в mongodb

Не съхранявайте телефонните номера като цели числа. Съхранявайте ги като низове. Когато имате стойност, която се състои само от цифри и върху която аритметиката е безсмислена, като пощенски код, номер на банкова сметка или телефонен номер, тогава съхраняването й като число няма много смисъл.

  • Както вече забелязахте, числата са почти невъзможни за търсене, когато искате да търсите последователност от цифри, тъй като компютърните системи съхраняват цели числа в двоичен, а не в десетичен формат.
  • Не можете да имате водещи нули
  • Когато числото е твърде дълго, или ще срещнете целочислено препълване, или ще го преобразувате в число с плаваща запетая (по преценка на вашия драйвер MongoDB). И двете ще доведат до много странно поведение.

Всичко това се отнася за почти всяка база данни, между другото, не само за MongoDB.

Но ако сте абсолютно решени да ги запазите като числа, ето две неща, които можете да направите.

  1. Когато броят на неизвестните цифри е фиксиран, можете да използвате $gt и $lt оператори за търсене на диапазон. contactphone:{$gt:5556000, $lt:5556999} ще намери всички числа с модела 5556xxx .
  2. Можете да използвате $where -query, която използва функция на javascript за вътрешно преобразуване на всяко число в низ и след това прилага вашия регулярен израз към този низ. $where: "String(this.contactphone).match(/^4832/) != null" . Надявам се, че нямате много документи във вашата база данни, защото когато имате, тази заявка може да отнеме известно време.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDb $lookup заявка с множество полета от масив обекти

  2. Модел на Javascript модул с обратно извикване на Ajax

  3. Как да експортирате mongoDB данни във формат CSV?

  4. `полетата не могат да бъдат идентични:' ' и ' '` mongoimport грешка

  5. как да задам нивото на регистриране на информация за MongoDb?