Yii + MongoDB + ActiveRecord。如何在ActiveRecord中使用原始查询?

时间:2018-11-08 20:36:20

标签: mongodb activerecord yii

我是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查询?

谢谢!

2 个答案:

答案 0 :(得分:0)

我建议您使用yii2官方mongodb软件包

https://github.com/yiisoft/yii2-mongodb

答案 1 :(得分:0)

我没有设法在ActiveRecord中插入原始查询,但是我发现了如何将它们“翻译”为ActiveRecord语言。 因此,查询

{"options.values":{"$elemMatch": {"$elemMatch":{"$in":['some_value']}}} }

的翻译如下:

            $query->andWhere(
            ['options.values' =>
                ['$elemMatch' =>
                    ['$elemMatch' =>
                        ['$in' => ['value1', 'value2'], ...]
                    ]
                ]
            ]
        );