mongoid / mongodb - 嵌入式文档的地理空间查询

时间:2012-02-07 13:28:33

标签: mongodb mongoid

可以对嵌入文档进行地理空间查询并获得“平坦”结果吗?

Class a
  ....
  embeds_many : bs
end


Class b
   ....
   field :location, :type => Array

   embedded_in :a, :inverse_of => :b
   index [[:location, Mongo::GEO2D]]
end

我能够在mongo控制台中推送索引

db.a.ensureIndex({"bs.location" : "2d"})

然后能够从mongo控制台查询

db.a.find( { 'b.location' : { $near : [50,50] } # mongo console 

但是,结果是“a”文档列表,而不是“b”对象列表。

两个问题: 1 *这是我想做的事情吗? (我知道[并遵循虚拟集合Jira] http://jira.mongodb.org/browse/SERVER-142

2 *如果是,如何在Mongoid中完成?

如果没有,我将拥有的唯一选择是删除嵌入式集合并转移到“经典”引用/ is_referenced几个类。

2 个答案:

答案 0 :(得分:1)

在v2.0中是不可能的,但在v2.1中,使用聚合框架和重命名字段(可能还有其他方法)。

基本想法是$ match:{$ near:<> },然后$ project:{_ id:0,location:“$ b.location”}

http://www.mongodb.org/display/DOCS/Aggregation+Framework+-+%24project#AggregationFramework-%24project-RenamingFields

答案 1 :(得分:0)

这不可行。您将不得不使用一个查询来获取“a”文档列表,然后将其过滤到“b”文档列表中,但无法将其合并为一个步骤。

相关问题