MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Mongo rzuca ciąg na numer w zapytaniu

Aktualizacja (obowiązuje od MongoDB v4.0):

Możesz użyć kombinacji $expr i $toDouble aby osiągnąć pożądane zachowanie w ten sposób:

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

Oryginalna odpowiedź (MongoDB v3.6 i starsze):

MongoDB nie może konwertować ciągów na liczby. Więc jedyną opcją tutaj jest użycie przerażającego $where operator:

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

To nie będzie używać żadnych indeksów i nie jest zbyt szybkie, ale może nadal jest w porządku dla małych kolekcji.

Niemniej jednak sugerowałbym przechowywanie liczb jako typów liczbowych. Więc powinieneś przekonwertować swój string s do int s lub long s (lub prawdopodobnie double s nawet), jak pokazano tutaj: jak przekonwertować ciąg na wartości liczbowe w mongodb




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak znaleźć nieużywane indeksy w MongoDB?

  2. Test jednostkowy z Mongoose

  3. Co się stanie, gdy połączenia z MongoDB nie zostaną zamknięte?

  4. Jak przekonwertować pole tekstowe oddzielone przecinkami na tablicę w mongodb

  5. Jak obliczyć percentyl?