我有一个猫鼬模式和模型定义如下:
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);
如果我尝试:
var user = new User({ email: 'user@example.com' });
user.save(function(err) {
if (err) return done(err);
should.not.exist(err);
done();
});
我收到错误消息:
MongoError: Can't extract geo keys from object, malformed geometry?:{}
尽管此模式中的位置字段不是必需的,但无论如何它似乎都是如此。我已经尝试添加default: [0,0]
which 确实可以规避此错误,但它似乎有点像 hack,因为这显然不是一个好的默认值,理想情况下,架构不会要求用户始终拥有一个位置。
MongoDB / mongoose 的地理空间索引是否意味着需要索引的字段?