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

ネストされた配列フィールドのMongodb2dsphereインデックス

    あなたが提供したドキュメントは私には良さそうです。私はあなたのドキュメントの短いバージョンで簡単なテストも行いました、そしてそれは私のために働きます。

    "_id" : ObjectId("530cb07c009d8c323b477957"),
            "time_from" : ISODate("2014-02-25T15:02:20.714Z"),
            "checkin" : [
                    {
                            "user_id" : 1,
                            "loc" : {
                                    "type" : "Point",
                                    "coordinates" : [
                                            73.43,
                                            42.22
                                    ]
                            }
                    }
            ]
    
    db.testGeo.ensureIndex( { "checkin.loc" : "2dsphere"  } );
    

    したがって、コレクション内の他のドキュメントを確認することをお勧めします。それらの一部は、インデックスの形式が正しくない可能性があります。また、座標配列要素が文字列でないことを確認してください。このドキュメントは2dsphereインデックスには無効であるため:

    "_id" : ObjectId("530cb07c009d8c323b477957"),
                "time_from" : ISODate("2014-02-25T15:02:20.714Z"),
                "checkin" : [
                        {
                                "user_id" : 1,
                                "loc" : {
                                        "type" : "Point",
                                        "coordinates" : [
                                                "73.43",
                                                "42.22"
                                        ]
                                }
                        }
                ]
    

    座標要素を文字列にするための引用符に注意してください。

    コメントへの回答: Mongoでは、コレクションごとに1つの地理空間インデックスのみが許可されます。したがって、runCommandのフィールドパス全体を指定する必要はありません。コレクション名で十分です。これは、コレクション名がcheckin_20140222の場合に機能するはずです。

    db.runCommand( { geoNear: 'checkin_20140222', near: {type: "Point", coordinates: [73.43, 42.22]}, spherical: true, maxDistance: 40000})
    

    お役に立てば幸いです。




    1. 配列をredisに保存するにはどうすればよいですか?

    2. mongodbカーソルからnode.jsのExpressresponseにストリーミングします

    3. MongooseスキーマでMongoDBGeoJSONフィールドをどのように表現しますか?

    4. 配列内のフィールドが別のフィールドと比較されるドキュメントを検索する