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

mongodbで緯度と経度のある近くの場所を見つけるにはどうすればよいですか?

    こんにちはあなたの場合、私はあなたが以下のようにドキュメントの上を変更するべきだと思います

        {
        "_id" : ObjectId("545749dba2b0b4cf603a7546"),
        "city" : "B",
        "placeName" : "A",
        "loc" : {
            "lon" : 51.10682735591432,
            "lat" : -114.11773681640625
        }
    }
    {
        "_id" : ObjectId("545749f3a2b0b4cf603a7547"),
        "city" : "B1",
        "placeName" : "A1",
        "loc" : {
            "lon" : 51.09144802136697,
            "lat" : -114.11773681640625
        }
    }
    

    その後、上記のドキュメントを以下のようにインデックス付けします

    db.collectionName.ensureIndex({loc:"2d"})
    

    インデックス作成が適切に実行されている場合は、次のクエリを記述して、近くのドキュメントを見つけます

    db.location.find({loc: {$near:[51,-114]}})
    

    さらにヘルプが必要な場合は、このmongo$nearおよび$geoNearここをクリック<を参照してください。 / a>

    golangについて詳しく知らないので、golangをお詫びします

    golangの場合

    var places []Place
    lat := 51.515614
    long := -0.268998
    err = coll.Find(bson.M{"loc": bson.M{"$near": []float64{long, lat}, "$maxDistance" :      0.056}}).All(&places)
    


    1. MongoDBを使用して配列要素に基づいてレコードをグループ化する方法

    2. Mongoidを使用する代わりにRubyから直接MongoDBをクエリする方法は?

    3. MongoDB Aggregation Framework-日付範囲で照合し、日でグループ化し、各日の平均を返す方法は?

    4. 集約は内部オブジェクトを蓄積します