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

$ inと$またはをMongoDBで相互に置き換えることはできますか?

    公式ドキュメント自体からまたは-対-in :

    以下のようなドキュメントがある場合:

    [
      {
        "price": 100
      },
      {
        "price": 200
      },
      {
        "price": 300
      },
      {
        "price": 400
      },
      {
        "price": 500
      }
    ]
    

    priceのドキュメントを取得したい場合 100に等しい または500 、:

    のようなクエリ
    db.collection.find({ price: { $in: [ 100, 500 ] } })
    

    上記のようにすることで、クエリはシンプルでクリーンになります。 $orを使用することもできます $inの代わりに しかし、なぜあなたは省略表記を失い、同じフィールドのオブジェクトを何度も追加することによってクエリをかさばるように見せようとするのでしょうか?

    デフォルトでは、論理的なORを実行する場合 2つの異なる演算子では、$orを使用します 、ただし、$orを使用する場合 同じフィールドで:

    db.collection.find({ $or: [ { price: { $lt: 200 } }, { price: { $gt: 400 } } ] })
    

    上記のように、同じフィールドに一致する複数の異なる条件がある場合は、それを使用します。

    これらの2つのクエリは、実行すると同じ結果になりますが、$inを使用すると -入力値が直線の場合、または入力値がpriceの値と完全に一致する文字列またはその他のタイプの場合 ドキュメントのフィールドですが、$orを使用する場合 同じフィールドでさまざまな条件をチェックしています。

    テスト: mongoplayground




    1. マングースは奇妙なオブジェクトを返すことを見つけます

    2. $groupbyの後の動的キー

    3. サブコレクションでのMongodbC#の一括更新/置換

    4. Android:unknownhostexceptionを処理する必要があるため、アプリケーションが実行されません。私がやるとクラッシュします