sql >> Databáze >  >> NoSQL >> MongoDB

sql „jako“ operace s čísly v mongodb

Neukládejte telefonní čísla jako celá čísla. Uložte je jako provázky. Když máte hodnotu, která se skládá pouze z číslic a na které je aritmetika bezpředmětná, jako je PSČ, číslo bankovního účtu nebo telefonní číslo, pak její uložení jako číslo nedává moc smysl.

  • Jak jste si již všimli, čísla je téměř nemožné vyhledávat, když chcete hledat číselnou posloupnost, protože počítačové systémy ukládají celá čísla v binárním, nikoli v desítkovém tvaru.
  • Nemůžete mít úvodní nuly
  • Když je číslo příliš dlouhé, buď dojde k přetečení celého čísla, nebo jej necháte převést na číslo s plovoucí desetinnou čárkou (podle uvážení vašeho ovladače MongoDB). Obojí bude mít za následek velmi podivné chování.

To vše se týká téměř jakékoli databáze, mimochodem, nejen MongoDB.

Ale pokud byste byli absolutně odhodlaní je ponechat jako čísla, můžete udělat dvě věci.

  1. Když je počet neznámých číslic pevný, můžete použít $gt a $lt operátory k vyhledání rozsahu. contactphone:{$gt:5556000, $lt:5556999} najde všechna čísla se vzorem 5556xxx .
  2. Můžete použít $where -query, který používá funkci javascriptu k internímu převodu každého čísla na řetězec a poté na tento řetězec aplikuje váš regulární výraz. $where: "String(this.contactphone).match(/^4832/) != null" . Doufám, že ve své databázi nemáte mnoho dokumentů, protože když je budete mít, tento dotaz může chvíli trvat.



  1. Mongodb :Zkontrolujte, zda je bod uvnitř uloženého polygonu

  2. Publikace meteorů:Skrytí určitých polí v poli dokumentu pole?

  3. Kroky pro připojení MongoDB a Solr pomocí DataImportHandler

  4. Aktualizovat dokument MongoEngine pomocí pythonského diktátu?