Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 我是否可以/应该为Mongoose中的嵌入文档编制索引?_Mongodb_Node.js_Mongoose - Fatal编程技术网

Mongodb 我是否可以/应该为Mongoose中的嵌入文档编制索引?

Mongodb 我是否可以/应该为Mongoose中的嵌入文档编制索引?,mongodb,node.js,mongoose,Mongodb,Node.js,Mongoose,我有以下模式;地址是一个地理编码位置,机构有许多地址。我的问题是,如果我希望能够根据机构的地址对其执行地理空间搜索,那么我是否需要在机构级别对其进行索引(已经在地址模式级别进行了索引) 此外,我很难找到关于如何基于嵌套文档查找的信息。在这种情况下,是否有可能实现我的期望,或者我应该扩展我的域结构并拥有一个“AgencyAddress”?这种方法在我看来有点像RDBMS,但我也看到了它的优点 我有点困惑,我怎么能使用来自Agency(或bridge object AgencyAddress)的Ob

我有以下模式;地址是一个地理编码位置,机构有许多地址。我的问题是,如果我希望能够根据机构的地址对其执行地理空间搜索,那么我是否需要在机构级别对其进行索引(已经在地址模式级别进行了索引)

此外,我很难找到关于如何基于嵌套文档查找的信息。在这种情况下,是否有可能实现我的期望,或者我应该扩展我的域结构并拥有一个“AgencyAddress”?这种方法在我看来有点像RDBMS,但我也看到了它的优点

我有点困惑,我怎么能使用来自Agency(或bridge object AgencyAddress)的ObjectId引用,而不使用从address返回的反向链接。我不想有反向链接,因为地址将被应用程序中的许多其他对象使用

谢谢

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'});