【问题标题】:Mongo Indexing - NodejsMongo 索引 - Nodejs
【发布时间】:2012-09-30 02:41:36
【问题描述】:

我使用以下架构和代码在 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);
            });

};

我可以插入数据,但是当我运行基于radius的查询时,运行时出现以下错误。

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

我的代码有什么问题吗?

【问题讨论】:

  • 什么代码抛出了这个错误?

标签: node.js mongodb mongoose


【解决方案1】:

我认为您对 loc 的架构定义是错误的。应该是

loc: {
  lon: Number,
  lat: Number
}

在你的架构定义之后添加索引

employeeSchema.index({
  loc: "2d"
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    • 2014-08-01
    • 2014-01-11
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    • 2019-11-27
    相关资源
    最近更新 更多