sql >> Database teknologi >  >> NoSQL >> MongoDB

Mongodb 2dsphere-indeks for indlejret array-felt

Det dokument, du leverede, ser godt ud for mig, jeg har også lavet en simpel test med en kort version af dit dokument, og det virker for mig.

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

Så jeg foreslår, at du tjekker andre dokumenter i samlingen, nogle af dem kan være forkert udformet til indekset. Sørg også for, at dine koordinatmatrixelementer ikke er strenge. Fordi dette dokument ikke er gyldigt for 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"
                                    ]
                            }
                    }
            ]

Bemærk venligst anførselstegnene for koordinatelementerne, hvilket gør dem til strenge.

SVAR PÅ KOMMENTAREN: Mongo tillader kun ét geospatialt indeks pr. samling. Så du behøver ikke at angive hele feltstien for din runCommand. Samlingens navn er nok. Dette burde fungere for dig, hvis samlingens navn er checkin_20140222

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

Håber det hjælper!




  1. Mongos Installation/Opsætning i Elastic Beanstalk

  2. Hvordan tæller du mængden af ​​dokumenter i en MongoDB-samling i Node?

  3. Hvordan udfører du et find (id :{ $in :[ list ] } ) ved hjælp af vertx-mongo-klient

  4. Hvordan bruger man django sammen med mongoengine?