首页 > 解决方案 > PHP - MongoDB:使用数组中的字段名称从子文档中检索字段

问题描述

考虑一个数组

$lettersArray = [A,C,E,G]

我的 MongoDB 集合具有以下结构。

{
    Collection : {
        letters:{
            A:{...},
            B:{...},
            ...
            Z:{...}
        }

    }
}

考虑 Letter Sub 文档是更大集合的一部分。因此我使用聚合。现在我试图投影 -

['$Collection.letters' => ['$elemMatch' => ['$in' => $lettersArray]]

也试过

['Letters' => ['$in' => [$lettersArray,'$Collection.letters']]

但它没有用。

最后,我想要如下结果:

 [
     Collection => [
        letters => [
            A => [...],
            C => [...],
            E => [...],
            G => [...]
        ]
    ]
]

有没有办法做到这一点?

标签: phpmongodb

解决方案


在 PHP 中,您可以使用 array_combine 和 array_fill 来创建空数组。

$lettersArray = ['A','C','E','G'];

$letters = array_combine($lettersArray, array_fill(0,count($lettersArray), []));

Array_fill 创建一个从索引 0 到 $lettersArray 中项目计数的数组,其中包含内容[]

输出:

array(4) {
  ["A"]=>
  array(0) {
  }
  ["C"]=>
  array(0) {
  }
  ["E"]=>
  array(0) {
  }
  ["G"]=>
  array(0) {
  }
}

https://3v4l.org/TeoFv


推荐阅读