arrays - 如何在数组中搜索另一个数组中存在的值并将找到的值的索引输出到 [mongodb] 中的新数组中
问题描述
我在每个文档中有一个 Collection 是一个数组字段,我想搜索它以查找另一个数组中元素的出现,并将找到的元素的索引作为数组输出。
例如:
我有一个带有 foo 字段的文档,
{
foo = [1,4,3,6,6],
foo = [1,5,7,5,8],
foo = [2,4,3,1,6],
foo = [1,4,9,6,7]
}
和一个包含要搜索的元素的数组
bar = [3,6]
我希望输出是
{output = [2,3]}
{output = [-1,-1]}
{output = [2,4]}
{output = [-1,3]}
我曾尝试将聚合管道和映射函数与 $indexOfArray 一起使用,但似乎无法使其工作。
解决方案
您可以使用$map
表达式。
db.collection.aggregate([
{"$project":{
"output":{
"$map":{
"input":[3,6],
"in":{"$indexOfArray":["$foo","$$this"]}
}
}
}}
])
推荐阅读
- scala - 通过比较字符串列表和映射来过滤元素
- asp.net-core - 如何在 finbuckle 多租户配置中更改授权类型
- r - 使用 lapply 创建语料库时的内存问题
- angular - Jhipster 项目的 Docker 文件
- python - 在 x 轴 Matplotlib 上绘制带有垂直标签的图形
- arima - ARIMA - 读取 ACF 和 PACF 图
- git - git submodule init 仅存储在 .gitmodules
- c# - 在 WPF 中用他们的 backgroundworker 画一条线
- java - 这是电源实现的功能,我也得到了逻辑和代码,但在偶数情况下,输出中没有填充数字和电源
- css - 邪恶的 pdf 自定义字体无法在 Rails 应用程序中正确加载