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

Mongodbは配列要素の比較を見つけます

    毎回フィールドの正確な形式があるため(円は2要素の配列です)、集計フレームワークでフィールドを2つのフィールドに変換してから、それらを射影で比較し、一致させて、要件を満たす要素だけを取得できます。 2番目の配列要素が最初の配列要素よりも大きい。

    db.place.aggregate( [
          { $unwind : "$center" },
          { $group : { _id : "$_id", 
                       centerX : {$first:"$center"}, 
                       centerY : {$last:"$center"} 
          } },
          { $project : { YgtX : { $gt : [ "$centerY", "$centerX" ] } } },
          { $match : { YgtX : true } }
    ] );
    

    これで、配列が任意の数値のペアである場合は、上記を使用できます。

    コメントで、ペアは座標(緯度、経度)を表しているとおっしゃいましたが、MongoDBでは、座標ペアは常に長い間保存され、緯度 -実際のx、y値が(球形ではなく)平らな場所の座標である場合、単一の地理空間クエリでX座標よりも大きいY座標を持つすべてのドキュメントを見つけることができます:

    db.place.find( { center : { $geoWithin : { $geometry : {
                      type:"Polygon", 
                      coordinates:[[[50,50],[-50,50],[-50,-50],[50,50]]]
    } } } } );
    

    上記のクエリは、座標系がXとYに沿って-50から50になり、Y>=Xを持つすべての座標を表す三角形内のすべてのポイントを見つけることを前提としています。



    1. MongoDBの最後の更新がいつ行われたかを確認する最速の方法は何ですか

    2. Mongo:キーによるクエリを1レベル深く

    3. MongoDB PHP Uncaught MongoDB \ Driver \ Exception \ ConnectionTimeoutException:適切なサーバーが見つかりません

    4. MongoDBCompassを使用したJSON入力の予期しない終了