mongodb - 我可以/应该在 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}
});

最佳答案

我没有使用 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

java - 如何使用 $ne 运算符查询 mongodb?

c# - 如何通过使用 MongoDB C# 驱动程序调用 obj.ToBsonDocument()