sql >> Databáze >  >> NoSQL >> MongoDB

Index Mongodb 2dsphere pro pole vnořeného pole

Dokument, který jste poskytli, se mi zdá dobrý, také jsem provedl jednoduchý test s krátkou verzí vašeho dokumentu a funguje mi to.

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

Navrhuji tedy zkontrolovat další dokumenty ve sbírce, některé z nich mohou mít nesprávný formát pro index. Také se ujistěte, že prvky pole souřadnic nejsou řetězce. Protože tento dokument není platný pro index 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"
                                    ]
                            }
                    }
            ]

Všimněte si prosím uvozovek prvků souřadnic, které z nich dělají řetězce.

ODPOVĚĎ NA KOMENTÁŘ: Mongo povoluje pouze jeden geoprostorový index na kolekci. Nemusíte tedy zadávat celou cestu pole pro příkaz runCommand. Stačí název sbírky. To by vám mělo fungovat, pokud je název kolekce checkin_20140222

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

Doufám, že to pomůže!




  1. Problémy s výkonem omezené kolekce

  2. Výsledek dotazu Mongoose .find obsahuje metadata dotazu? nelze pouze ručně promítnout každou vlastnost sbírky, jak získat pouze dokument?

  3. takže vaše HBase je rozbitá

  4. Generování Mongo ObjectId (_id) s vlastním časem?