mongodb 在可选参数上定义Mongoose模式索引(2dsphere

jm2pwxwz  于 2023-01-12  发布在  Go
关注(0)|答案(1)|浏览(127)

我有一个用户模型,可以分为两种类型:见习生和招募人员。
我希望申请者有一个地理定位领域,但不是招聘人员,我必须使他们在一个单一的模型。
我的模型中有一部分

const schema = new mongoose.Schema(
{
    type: {type: String},
    name: {type: String},
    geolocation: {
        name: {type: String},
        type: {type: String, default: 'Point'},
        coordinates: {type: [Number]}
    }
}
)

schema.index({ geolocation: '2dsphere' })
export default mongoose.model('User', schema)

我的问题是:
当我试图创建一个“招聘者”时,我遇到一个错误,说Mongo未能将“地理位置”索引到2dsphere索引中。
我只想在地理位置不为空时索引它,这样我就可以在不保存位置的情况下创建招聘人员,并在保存位置的情况下创建应聘人员。
你能帮我吗?:)

n53p2ov0

n53p2ov01#

我知道问题出在哪了:
我定义:

geolocation: {
        name: {type: String},
        type: {type: String, default: 'Point'},
        coordinates: {type: [Number]}
    }

事实上,在default: 'Point'中,我创建了一个地理位置对象,它有一个空数组,为了解决这个问题,我删除了这个default: 'Point',并且没有创建该对象,所以schema.index没有运行。

相关问题