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

Mongo Cast řetězec na číslo pro dotaz

Aktualizace (platná od MongoDB v4.0 výše):

Můžete použít kombinaci $expr a $toDouble k dosažení požadovaného chování takto:

db.MyCollection.find({ $expr: { $lte: [ { $toDouble: "$Price" }, 1000.0 ] } })

Původní odpověď (MongoDB v3.6 a nižší):

MongoDB neumí převádět řetězce na čísla. Takže vaší jedinou možností je použít obávaný $where operátor:

db.MyCollection.find({ $where: "parseInt(this.Price) <= 1000" })

Nebude to používat žádné indexy a není to zrovna rychlé, ale možná je to pro malé sbírky pořád v pořádku.

Přesto bych doporučil ukládat čísla jako číselné typy. Měli byste tedy převést svůj string s na int s nebo long s (nebo pravděpodobně double s even), jak je znázorněno zde: jak převést řetězec na číselné hodnoty v mongodb




  1. Vícenásobný klíč ukazující na jednu hodnotu v Redis (Cache) s javou

  2. Přesouvání HDFS dat do MongoDB

  3. Jak převést pole konkrétního sloupce objektu dtype na sloupec datového rámce v pandách

  4. Dokumentace slibů Mongoose říká, že dotazy nejsou sliby?