Mongodb 我是否可以/应该为Mongoose中的嵌入文档编制索引?
我有以下模式;地址是一个地理编码位置,机构有许多地址。我的问题是,如果我希望能够根据机构的地址对其执行地理空间搜索,那么我是否需要在机构级别对其进行索引(已经在地址模式级别进行了索引) 此外,我很难找到关于如何基于嵌套文档查找的信息。在这种情况下,是否有可能实现我的期望,或者我应该扩展我的域结构并拥有一个“AgencyAddress”?这种方法在我看来有点像RDBMS,但我也看到了它的优点 我有点困惑,我怎么能使用来自Agency(或bridge object AgencyAddress)的ObjectId引用,而不使用从address返回的反向链接。我不想有反向链接,因为地址将被应用程序中的许多其他对象使用 谢谢Mongodb 我是否可以/应该为Mongoose中的嵌入文档编制索引?,mongodb,node.js,mongoose,Mongodb,Node.js,Mongoose,我有以下模式;地址是一个地理编码位置,机构有许多地址。我的问题是,如果我希望能够根据机构的地址对其执行地理空间搜索,那么我是否需要在机构级别对其进行索引(已经在地址模式级别进行了索引) 此外,我很难找到关于如何基于嵌套文档查找的信息。在这种情况下,是否有可能实现我的期望,或者我应该扩展我的域结构并拥有一个“AgencyAddress”?这种方法在我看来有点像RDBMS,但我也看到了它的优点 我有点困惑,我怎么能使用来自Agency(或bridge object AgencyAddress)的Ob
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}
});
我对mongoose并没有经验,所以我可以一般地解释mongodb索引。从您的问题中,我了解到机构中嵌入了多个
地址地理编码文档
如果您使用的是mongodb版本,我觉得它并不完美。是否真的需要在mongo控制台中创建索引@Greg“这真的是在mongo控制台中创建索引的要求吗”,一点也不,你可以通过你使用的任何语言驱动程序来实现,我是在控制台中说的,因为我没有任何使用索引的经验mongoose@ramesh知道了。我之所以概括你的答案,部分是因为点符号不适合我。但我意识到我错过了这些引语。谢谢
db.Agency.ensureIndex({"Address.location": 2d})
AgencySchema.index({'Address.location': '2d'});