sql >> データベース >  >> NoSQL >> MongoDB

クエリ用のMongoキャスト文字列から数値へ

    更新(MongoDB v4.0以降で有効):

    $expr を組み合わせて使用​​できます および $ toDouble このような望ましい動作を実現するには:

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

    元の回答(MongoDB v3.6以下):

    MongoDBは文字列を数値に変換できません。したがって、ここでの唯一のオプションは、恐ろしい $where を使用することです。 演算子:

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

    これはインデックスを使用せず、正確に高速ではありませんが、小さなコレクションでも問題ない可能性があります。

    それでも、数値を数値型として保存することをお勧めします。したがって、stringを変換する必要があります sからint sまたはlong s(またはおそらくdouble s偶数)ここに示すように: mongodbで文字列を数値に変換する方法




    1. MongoDB-コレクション内のグループごとに最大属性を持つドキュメントを取得します

    2. docker-composeを使用するときにmongodbイメージに--authを追加する方法は?

    3. mongodbに特定のインデックスをRAMに保存するように強制する方法はありますか?

    4. MongoDBアグリゲーションパフォーマンス機能