php - 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 => [...]
]
]
]
有没有办法做到这一点?
解决方案
在 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) {
}
}
推荐阅读
- python - Python neo4j - 我们可以显示图形实例吗?
- laravel - 使用 Vue-Router 时 Webpack 在 Laravel 应用程序中生成空 CSS 文件
- python - python中是否有相当于Matlab的finv?
- 2sxc - 将 Angular 代码导入 2SXC 的最佳方法是什么
- dictionary - 将自定义字典映射到推文数据框
- php - AngularJS用一个对象设置formData
- python - 使用 BeautifulSoup,在两种不同的情况下调用相同的函数时,我得到了两种不同的结果
- javascript - 如何让计时器在点击 Javascript 时停止
- mysql - 如何每分钟获得聚合平均结果
- api - Java 标准库:库中哪些方法的参数数量最多?