Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.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 php中封装多个$in查询_Php_Arrays_Mongodb_Sorting - Fatal编程技术网

如何在mongodb php中封装多个$in查询

如何在mongodb php中封装多个$in查询,php,arrays,mongodb,sorting,Php,Arrays,Mongodb,Sorting,此处产品名称和品牌名称是同一文档中的两个不同列。我想对选定的产品和品牌名称应用过滤器 我的数组是这样的 Array ( [PRODUCT_NAME] => Array ( [$and] => Array ( [$in] => Array ( [0] =>

此处
产品名称
品牌名称
是同一文档中的两个不同列。我想对选定的产品和品牌名称应用过滤器

我的数组是这样的

Array
(
    [PRODUCT_NAME] => Array
        (
            [$and] => Array
                (
                    [$in] => Array
                        (
                            [0] => Product1
                            [1] => Product2
                        )

                )

        )

    [BRAND_NAME] => Array
        (
            [$and] => Array
                (
                    [$in] => Array
                        (
                            [0] => Brand1
                        )

                )

        )

)

使用mongodb(假设是最新版本)实现这一点的方法是使用mongodb聚合,特别是

因此,以您的情况为例:

db.yourcollection.aggregate( [
  { $unwind : "$firstattribute" } , // 1
  { $unwind : "$PRODUCT_NAME" },    // 2
  { $unwind : "$BRAND_NAME" },      // 3
] )
现在有一些解释:

  • 因为在您的示例中,您提供了一个数组,您必须将其展开,如果不是这样,请删除
  • 在这里,您可以展开产品名称数组
  • 这里是品牌名称
  • 注意:我可以通过一个真实的例子(一个json,每个数组中至少有2个元素)提供一个更好的(且可运行的)解决方案