sql >> Database >  >> NoSQL >> MongoDB

Mongodb 2dsphere-index voor genest matrixveld

Het door u verstrekte document ziet er goed uit, ik heb ook een eenvoudige test gedaan met een korte versie van uw document en het werkt voor mij.

"_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"  } );

Dus ik raad aan om andere documenten in de collectie te controleren, sommige kunnen een verkeerde indeling hebben voor de index. Zorg er ook voor dat de array-elementen van uw coördinaten geen strings zijn. Omdat dit document niet geldig is voor de 2dsphere-index:

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

Let op de aanhalingstekens voor de coördinatenelementen, waardoor ze strings zijn.

ANTWOORD OP DE OPMERKING: Mongo staat slechts één geospatiale index per verzameling toe. U hoeft dus niet het hele veldpad voor uw runCommand op te geven. Collectienaam is voldoende. Dit zou voor u moeten werken als de collectienaam checkin_20140222 is

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

Ik hoop dat het helpt!




  1. Maak een MongoDB-gebruiker die alleen de documenten kan beheren die hij heeft gemaakt

  2. MongoDB aangepaste sortering

  3. Waarom krijg ik Kan headers niet instellen nadat ze naar de clientfout in Nodejs zijn verzonden?

  4. De complexiteit van MongoDB-aggregatiequery's evalueren:kosten van $ lookup