小编Nik*_*osh的帖子

在mongoose模式上应用2dsphere索引会强制要求使用位置字段吗?

我有一个mongoose模式和模型定义如下:

var mongoose = require('mongoose')
  , Schema = new mongoose.Schema({
      email: {
        index: {
          sparse: true,
          unique: true
        },
        lowercase: true,
        required: true,
        trim: true,
        type: String
      },
      location: {
        index: '2dsphere',
        type: [Number]
      }
    })
  , User = module.exports = mongoose.model('User', Schema);
Run Code Online (Sandbox Code Playgroud)

如果我尝试:

var user = new User({ email: 'user@example.com' });

user.save(function(err) {
  if (err) return done(err);

  should.not.exist(err);
  done();
});
Run Code Online (Sandbox Code Playgroud)

我收到错误消息:

MongoError: Can't extract geo keys from object, malformed geometry?:{}
Run Code Online (Sandbox Code Playgroud)

尽管此模式中的位置字段不是必需的,但它似乎仍然如此.我已经尝试添加default: [0,0]哪个可以绕过这个错误,但是它似乎有点像黑客,因为这显然不是一个好的默认值,理想情况下,架构不需要用户始终拥有一个位置.

使用MongoDB/mongoose的地理空间索引是否意味着需要索引的字段?

mongoose mongodb node.js

11
推荐指数
2
解决办法
1万
查看次数

标签 统计

mongodb ×1

mongoose ×1

node.js ×1