0

次のスキーマとコードを使用して、インデクサーと一緒にMongoでコレクションを作成し、データを挿入します。コレクションはcategoryNameに基づいて動的に作成されることに注意してください。

var employeeSchema = new mongoose.Schema({

      categoryId              : {type: String, required: true },

      loc                     : {type: {lon: Number,  lat: Number}, index: '2d'},

     // createdBy             : {type: String, required: true },
      createDate              : {type: Date, default: Date.now}
});

exports.register = function   (objEmployee , callback)
{
            var emp = db.model(objEmployee.categoryName, employeeSchema );

            var objSchema = new emp(objEmployee);          
            objSchema.save(function (err) {
            if (err) return callback(err);
            console.info ('Data inserted successfully.');
            return callback(null);
            });

};

データを挿入できませんが、radiousに基づいてクエリを実行すると、次のエラーが発生します。

Sat Sep 29 20:21:24 uncaught exception: error: {
    "$err" : "can't find special index: 2d for: { loc: { $within: { $center: [ [ 50.9393925139, -114.0 ], 2.0 ] } } }",
    "code" : 13038

私のコードで何か問題がありますか?

4

1 に答える 1

3

loc のスキーマ定義が間違っていると思います。そのはず

loc: {
  lon: Number,
  lat: Number
}

そして、スキーマ定義の後にインデックスを追加します

employeeSchema.index({
  loc: "2d"
});
于 2012-09-29T15:19:59.597 に答える