Tengo documentos como este:
[ { id: 1, number: 10 }, { id: 2, number: 11 }, { id: 3, number: 12 } ]¿Cómo obtener documentos con una combinación de otros valores como el siguiente ejemplo usando el marco de agregación?
[ { id: 1, number: 10, other_numbers: [11, 12] }, { id: 2, number: 11, other_numbers: [10, 12] }, { id: 3, number: 12, other_numbers: [10, 11] } ]db.collection.aggregate([ { $lookup: { "from": "collection", "let": { "number": "$number" }, pipeline: [ { $match: { $expr: { $ne: [ "$number", "$$number" ] } } } ], "as": "other_numbers" } }, { $set: { "other_numbers": "$other_numbers.number" } } ]) db.collection.aggregate([ { "$group": { "_id": null, "number": { "$push": "$$ROOT" }, "other_numbers": { "$push": "$$ROOT" } } }, { "$unwind": "$number" }, { "$set": { "other_numbers": { "$filter": { "input": "$other_numbers.number", "as": "i", "cond": { "$ne": [ "$$i", "$number.number" ] } } }, "number": "$number.number", "_id": "$number.id" } } ])