Typegoose+nestjs+mongodb:索引不是使用@index decorator创建的



我遇到一个typegoose错误。我有一个名为SP的模型,我必须在它的属性geoLocation上创建2dsphere索引。我尝试了typegoose装饰器@index,但它不起作用,甚至没有抛出任何错误,我不知道发生了什么,也不知道typegoose是如何处理的。有人给我解决方案吗👆.

代码:

import { Prop, index, modelOptions, Severity } from '@typegoose/typegoose';
import { BaseModel } from '../base.model';
import { Factory } from 'nestjs-seeder';
export enum SPStatus {
INAVTIVE = "INAVTIVE",
ACTIVE = "ACTIVE",
}
@modelOptions({ options: { allowMixed: Severity.ALLOW } })
@index({ geoLocation: '2dsphere' }, {})
export class SP extends BaseModel{
@Factory(faker => faker.company.companyName())
@Prop({ required: true, index: true, text: true })
businessName : string

@Factory(faker => {
let data = {
type : "Point",
coordinates:[Number(faker.address.longitude()), Number(faker.address.latitude())]
}
console.log(data);
return data;
})
@Prop({ required: false })
geoLocation: {
type: string,
coordinates: [number]
}
}

试试下面的代码,它对我有效

@index({ location: '2dsphere' })
export class GPSData extends Typegoose{    

@prop({ required: true })
public log_Id!: mongoose.Types.ObjectId;
@ValidateNested({each: true})
@prop({
_id : false
})
readonly location: Location;
}
export class Location extends Typegoose{  

@prop()
@IsString({message: " type should be text"})
readonly type: String;
@prop({ required: true })
coordinates: [[Number]];
}

样本采集(类型可以是"点"、"多点"、线条串、多线条串、多边形、多多边形和几何采集之一(:

{ 
"log_Id": "5fbdec08ce02d61fec9a0189",
"location":{
"type":"MultiPoint",
"coordinates":[
[ -73.9580, 40.8003 ],
[ -73.9498, 40.7968 ],
[ -73.9737, 40.7648 ],
[ -73.9814, 40.7681 ]
]  
}
}

相关内容

最新更新