按引用的嵌入文档进行筛选


Filter by referenced embedded document

我需要按嵌入文档 Map 中的属性进行过滤,问题是它被引用了。

游戏 ->结构。

"_id" : ObjectId( "51051e7d8ead0ebd4e000000" ),
  "active" : true,
  "created" : 1359289981,
  "difficulty" : 0,
  "map" : { "$ref" : "Map",
    "$id" : ObjectId( "5103c0228ead0e3764000000" ),
    "$db" : "fantasytd" },
  "mode" : "coop",

对于非引用的嵌入式文档,这就足够

$q->field('map.playerLimit')->equals($playerLimit);

我尝试使用

$q->字段('地图')->prime()

但是如果没有运气,正确的方法是什么?

没办法。 以标准方式,您可以按map.$ref/map.

$id/map.$db过滤集合,其中map.$id查询非常有用。 按引用文档的其他属性进行过滤完全是另一回事。 也许您可以将 intersted 属性保存在 DBRef 中并正常查询它,您不应该这样做,并且在将来的某个版本中它不起作用。