2017-12-20 4 views
0

数値の文字列フィールドに対して以下のクエリを実行する方法はありますか?Mongo文字列をクエリの数値にキャスト

例のデータ

|   Id   |   Price   | 
|   1   |   "1000.00"  | 
|   2   |   "5400.00"  | 
|   3   |   "750.00"  | 

私はこのクエリを実行すると、それはすべてのレコードを返します。私はこのクエリを実行すると、それは何も返さない

db.MyCollection.find({ Price: {$lte: "1000.0"} }) 

を:

db.MyCollection.find({ Price: {$lte: 1000.0} }) 

答えて

0

のMongoDBはできません文字列を数値に変換します。

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

これは、任意のインデックスを使用せず、小規模なコレクションのために、まだ正確に高速だが、おそらく種類のOKではありません。だからここにあなたの唯一のオプションは恐ろしい$where演算子を使用することです。

それにもかかわらず数値を数値型として格納することをお勧めします。したがって、ここに示すようにstringintまたはlong(またはおそらくdouble秒)に変換する必要があります。how to convert string to numerical values in mongodb

関連する問題