首页 > 解决方案 > 单个数组中允许使用相同的键

问题描述

我已经使用 php mongodb 驱动程序使用了 mongodb 数据库。新的 mongodb 驱动程序遵循一些条件来执行查询。在我的代码中,我需要两个 OR 条件。当我在此条件数组中创建一个具有两个 OR 条件的数组时,会附加相同的键。实际上我想在我的数组中使用相同的键

以下是我创建的数组结构:-

            Array
            (
                [listingStatus] => Active
                [$or] => 
                    Array
                    (
                        [0] => Array
                            (
                                [propertyType.propertyType] => MongoDB\BSON\Regex Object
                                    (
                                        [pattern] => ^single family
                                        [flags] => i
                                    )
                            )

                        [1] => Array
                            (
                                [propertySubType.propertySubType] => MongoDB\BSON\Regex Object
                                    (
                                        [pattern] => ^single family
                                        [flags] => i
                                    )
                            )
                    )
                [0] => Array
                    (
                        [$or] => Array
                            (
                                [0] => Array
                                    (
                                        [address.fullStreetAddress] => MongoDB\BSON\Regex Object
                                            (
                                                [pattern] => ^florida
                                                [flags] => i
                                            )
                                    )

                                [1] => Array
                                    (
                                        [address.postalCode] => MongoDB\BSON\Regex Object
                                            (
                                                [pattern] => ^florida
                                                [flags] => i
                                            )
                                    )

                                [2] => Array
                                    (
                                        [address.city] => MongoDB\BSON\Regex Object
                                            (
                                                [pattern] => ^florida
                                                [flags] => i
                                            )
                                    )

                                [3] => Array
                                    (
                                        [mlsNumber] => MongoDB\BSON\Regex Object
                                            (
                                                [pattern] => ^florida
                                                [flags] => i
                                            )
                                    )
                            )
                    )
            )

上面是我在这个数组中创建数组,我使用了 array_push 方法,但是 mongodb 需要内部数组之外的第二个 OR 条件,上面的代码返回我在第二个 OR 条件下创建新数组。

以下是我的代码:-

            $dataSend = array('listingStatus' => 'Active'); 

              $propCondition[] = array('propertyType.propertyType' => new MongoDB\BSON\Regex("^$text", 'i'));
              $propCondition[] = array('propertySubType.propertySubType' => new MongoDB\BSON\Regex("^$text", 'i'));

              $dataSend['$or'] =  $propCondition;

              $nameCondition = [];

              $nameCondition[] = array('address.fullStreetAddress' => new MongoDB\BSON\Regex("^$request->list", 'i'));
              $nameCondition[] = array('address.postalCode' => new MongoDB\BSON\Regex("^$request->list", 'i'));
              $nameCondition[] = array('address.city' => new MongoDB\BSON\Regex("^$request->list", 'i'));
              $nameCondition[] = array('mlsNumber' => new MongoDB\BSON\Regex("^$request->list", 'i'));

              $dataSend1['$or'] =  $nameCondition;
              array_push($dataSend, $dataSend1);  
              print_r($dataSend); 

在这里,我在我的第一个数组中创建了数据发送数组,数据发送数组是我的第二个数组,我尝试在第一个数组中推送第二个数组。

我的预期结果是,当数组推送第二个数组不创建数组时,就像一个对象一样推送。在我的数组中,第一个键是列表状态,第二个键是 $or,最后一个键 $or 进入数组实际上它显示在数组外部。

标签: phpmysqlmongodb

解决方案


推荐阅读