我是MongoDB和Yii框架中的newby,但是我需要从结构复杂(嵌套数据数组)的文档集中选择数据。我设法编写了执行此操作的查询,但是我不知道如何将其插入使用ActiveRecord和QueryTrait的现有代码中。 这是我的查询(使用MongoDB语法编写):
db.getCollection("product").find({"options.values":{"$elemMatch": {"$elemMatch":{"$in":['some_value']}}} })
但是现有代码使用ActiveRecord + QueryTrait选择文档:
$query = new ActiveQuery('product');
$query->select('_id', 'name');
$query->andWhere(["_id" => $criteria["id"]]);
...etc
是否可以在此代码中插入原始MongoDB查询?
谢谢!
答案 0 :(得分:0)
我建议您使用yii2官方mongodb软件包
答案 1 :(得分:0)
我没有设法在ActiveRecord中插入原始查询,但是我发现了如何将它们“翻译”为ActiveRecord语言。 因此,查询
{"options.values":{"$elemMatch": {"$elemMatch":{"$in":['some_value']}}} }
的翻译如下:
$query->andWhere(
['options.values' =>
['$elemMatch' =>
['$elemMatch' =>
['$in' => ['value1', 'value2'], ...]
]
]
]
);