我有以下文件:

{
  "dates": [
    1399518702000,
    1399126333000,
    1399209192000,
    1399027545000
  ],
  "dress_number": "4",
  "name": "J. Evans",
  "numbers": [
    "5982",
    "5983",
    "5984",
    "5985"
  ]
}

是否可以从多个数组中展开数据,并仅从数组中获取成对的元素:

{
    "dates": "1399518702000",
    "numbers": "5982"
},
{
    "dates": "1399126333000",
    "numbers": "5983"
},
{
    "dates": "1399209192000",
    "numbers": "5984"
},
{
    "dates": "1399027545000",
    "numbers": "5985"
}

推荐答案

从3.2版开始,两个数组上都有$unwind个索引,$cmp个索引,只有$match个相等的索引.

如果您只有示例文档,此解决方案将填充您编写的内容.如果你有更多的文档,我不知道你希望在输出中得到什么,但是可以通过按文档的_id分组来解决.

db.test.aggregate([
    {
        $unwind: {
            path: '$dates',
            includeArrayIndex: 'dates_index',
        }
    },
    {
        $unwind: {
            path: '$numbers',
            includeArrayIndex: 'numbers_index',
        }
    },
    {
        $project: {
            dates: 1,
            numbers: 1,
            compare: {
                $cmp: ['$dates_index', '$numbers_index']
            }
        }
    },
    {
        $match: {
            compare: 0
        }
    },
    {
        $project: {
            _id: 0,
            dates: 1,
            numbers: 1
        }
    }
])

Mongodb相关问答推荐

MongoDB 4.4如何使用未知密钥更新dict

在MongoDB中,如何使用$in来匹配存储在数组变量中的值

数组过滤器 MongoDB

优化游戏应用程序的反馈表单后端设计

如何获取mongodb ObjectId的值?

MongoDB 到 Snowflake 连续加载

_id 和 $oid 的区别; mongo 数据库中的 $date 和 IsoDate

Pymongo API TypeError: Unhashable dict

将 MongoDB BsonDocument 转换为字符串

什么 Javascript 库可以针对对象判断类似 MongoDB 的查询谓词?

通过 Spring Boot 应用程序访问 mongodb 时的身份验证错误

`fields cannot be identical'和''` mongoimport错误

嵌套数组内的Mongodb增量值

MongoDb:如何将附加对象插入对象集合?

MongoDB - 聚合 - 获取数组中的唯一项

了解 Mongoose 中的关系和外键

mongodb: UnknownError assertion src/mongo/db/server_options_helpers.cpp:355

try 启用 Mongo DB 身份验证时发生 TypeError

无法使用命令写入模式错误,降级到兼容模式

如何使用 Spring 的 MongoTemplate 和 Query 类检索字段子集?