MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Chỉ mục Mongodb 2dsphere cho trường mảng lồng nhau

Tài liệu bạn cung cấp có vẻ tốt đối với tôi, tôi cũng đã thực hiện một bài kiểm tra đơn giản với phiên bản ngắn của tài liệu của bạn và nó phù hợp với tôi.

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

Vì vậy, tôi khuyên bạn nên kiểm tra các tài liệu khác trong bộ sưu tập, một số tài liệu trong số đó có thể không đúng định dạng cho chỉ mục. Đồng thời đảm bảo rằng các phần tử mảng tọa độ của bạn không phải là chuỗi. Vì tài liệu này không hợp lệ cho chỉ mục 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"
                                    ]
                            }
                    }
            ]

Vui lòng lưu ý dấu ngoặc kép cho các phần tử tọa độ khiến chúng trở thành chuỗi.

TRẢ LỜI CHO NHẬN XÉT: Mongo chỉ cho phép một chỉ mục không gian địa lý cho mỗi bộ sưu tập. Vì vậy, bạn không phải chỉ định toàn bộ đường dẫn trường cho runCommand của mình. Tên bộ sưu tập là đủ. Điều này sẽ phù hợp với bạn nếu tên bộ sưu tập là checkin_20140222

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

Hy vọng nó sẽ hữu ích!




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tra cứu tổng hợp Mongoose - Cách lọc theo id cụ thể

  2. Làm cách nào để kết nối mongoDB với ứng dụng angle2?

  3. Không thể hủy cấu trúc thuộc tính `user` của 'undefined' hoặc 'null'

  4. Truy vấn các phần tử mảng với Mongo

  5. Thực hiện câu lệnh chữ hoa chữ thường trong khung tổng hợp mongodb