MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Indeks Mongodb 2dsphere dla zagnieżdżonego pola tablicy

Dokument, który dostarczyłeś, wygląda dobrze dla mnie, wykonałem też prosty test z krótką wersją twojego dokumentu i działa dla mnie.

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

Sugeruję więc sprawdzenie innych dokumentów w kolekcji, niektóre z nich mogą być zniekształcone pod kątem indeksu. Upewnij się również, że elementy tablicy współrzędnych nie są łańcuchami. Ponieważ ten dokument nie dotyczy indeksu 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"
                                    ]
                            }
                    }
            ]

Zwróć uwagę na znaki cudzysłowu dla elementów współrzędnych, co czyni je ciągami.

ODPOWIEDŹ NA KOMENTARZ: Mongo dopuszcza tylko jeden indeks geoprzestrzenny na kolekcję. Nie musisz więc określać całej ścieżki pola dla swojego runCommand. Wystarczy nazwa kolekcji. Powinno to zadziałać, jeśli nazwa kolekcji to checkin_20140222

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

Mam nadzieję, że to pomoże!




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Dlaczego MongoDB nie używa przecięcia indeksu?

  2. Tworzenie obiektu BSON z ciągu JSON

  3. Dlaczego zapytanie Mongo dla filtrów zerowych w FETCH po wykonaniu IXSCAN

  4. Jak poprawnie przeszukiwać zagnieżdżony dokument MongoDB za pomocą Pythona?

  5. Próba znalezienia za pomocą $regex wielu pól jednocześnie w Mongodb