MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Indeks Mongodb 2dsphere untuk bidang array bersarang

Dokumen yang Anda berikan terlihat bagus bagi saya, saya juga melakukan pengujian sederhana dengan versi singkat dokumen Anda dan berhasil untuk saya.

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

Jadi saya sarankan untuk memeriksa dokumen lain dalam koleksi, beberapa di antaranya mungkin salah format untuk indeks. Pastikan juga bahwa elemen array koordinat Anda bukan string. Karena dokumen ini tidak valid untuk indeks 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"
                                    ]
                            }
                    }
            ]

Harap perhatikan tanda kutip untuk elemen koordinat yang membuatnya menjadi string.

JAWAB ATAS KOMENTAR: Mongo hanya mengizinkan satu indeks geospasial per koleksi. Jadi, Anda tidak perlu menentukan seluruh jalur bidang untuk runCommand Anda. Nama koleksi sudah cukup. Ini akan bekerja untuk Anda jika nama koleksi adalah checkin_20140222

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

Semoga membantu!




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mongo menunggu di 27017 bahkan setelah menginstal ulang

  2. Bagaimana cara mengatur database MongoDB di Heroku dengan MongoLab?

  3. Buat objek tanggal ISO dalam javascript

  4. Jenis bersyarat Mongodb

  5. MongoDB:keluaran 'id' bukan '_id'