我有以下模式;地址是经过地理编码的地点,机构有许多地址。我的问题是,如果我希望能够根据地址对代理机构执行地理空间搜索,那么我是否需要以代理级别对其进行索引(已在地址架构级别进行了索引)?可以/应该在Mongoose中索引嵌入式文档吗?
此外,我很难找到有关如何找到基于嵌套文件的信息。在这种情况下,甚至有可能做我希望的或者我应该扩大我的域名结构,并有一个“AgencyAddress”?这种方法对我来说似乎有点RDBMS,但我也可以看到它的优点。
我对如何使用来自Agency(或桥对象AgencyAddress)的ObjectId refs没有从地址返回的反向链接有点困惑。我不想拥有反向链接,因为地址将被应用程序中的许多其他对象使用。
谢谢!
var AddressSchema = new Schema({
name : {type: String, default : ''},
street1 : {type: String, default : ''},
street2 : {type: String, default : ''},
city : {type: String, default : '', required: true},
state : {type: String, required : true},
zip : {type: String, default ''},
country : {type: String},
location : {longitude: Number, latitude:Number}
type : {type: String, enum:['agent', 'agency', 'registrant'], index:true}
created_at : {type: Date, default: Date.now},
updated_at : {type: Date, default: Date.now}
primary : {type: Boolean, default: false}
});
AddressSchema.index({location: '2d'});
局:
var AgencySchema = new Schema({
name : {type : String, default : '', required : true},
Type : {type : String, enum['medical', 'disaster-service', 'local-law', 'state-law', 'federal-law'], index:true},
Addresses : [Address],
created_at : {type : Date, default : Date.now},
updated_at : {type : Date, default : Date.now}
});
啊,那是完美的人。谢谢。 – Chance
这对我来说并不完美。是否真的需要在mongo控制台中创建索引? – Greg
@Greg“是否真的需要在mongo控制台中创建索引”,完全没有,您可以通过您使用的任何语言驱动程序来做到这一点,我从控制台上说,因为我没有任何经验与猫鼬 – RameshVel