我有以下模式;地址是一个地理编码的位置,机构有许多地址。我的问题是,如果我希望能够根据其地址对代理机构执行地理空间搜索,那么我是否需要在代理机构级别以某种方式对其进行索引(已经在地址架构级别编制索引)?
另外,我很难找到有关如何根据嵌套文档进行查找的信息。在这种情况下,是否有可能做我希望做的事情,或者我应该稍微扩展我的域结构并拥有一个“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}
});
最佳答案
我没有使用 Mongoose 的经验,所以我可以大致解释一下 mongodb 索引。根据您的问题,我了解到多个 Address
地理编码文档嵌入到 Agency 中。
如果您使用的是
幸运的是 2.0 版在一周前发布。而且它很稳定。查看链接 2.0 Release Notes了解更多信息。
而且您不能直接在嵌入文档上建立索引。
必须在 mongodb shell 中这样做
db.Agency.ensureIndex({"Address.location": 2d})
我不知道mongoose的确切语法,可能是这样的
AgencySchema.index({'Address.location': '2d'});
查看 mongodb indexing了解更多信息
https://stackoverflow.com/questions/7463283/
相关文章:
mongodb - 处理 100+ 百万条记录的最佳 NoSQL 方法
arrays - 如何遍历 Reactjs 中的表格行和单元格
mongodb - 当数据库大小大于 RAM 时,MongoDB 可以工作吗?
java - 哪个是 mongodb 访问的最佳 java 驱动程序?
ruby-on-rails-3 - 使用 MongoID 在 Rails 中进行标记的良好解决方案
mongodb - MongoError : The $subtract accumulator i
javascript - MongoDB/ Mongoose : MarkModified a ne
javascript - Meteor.js 使用 X509 证书身份验证连接到 Mongo