Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Nối giá trị mảng với các trường khác trong MongoDB

Ghép chuỗi mảng và trường khác với $reduce và $concat

Sử dụng $reduce duyệt mảng nối chuỗi, sau đó $concat ghép với trường khác trong aggregation pipeline.

Dữ liệu môn học

> db.demo359.insertOne({
    Name1: "Chris",
    Name2: "David",
    Subjects: ["MySQL", "MongoDB", "Java"]
});

Pipeline nối chuỗi

> db.demo359.aggregate([
    {
        $project: {
            values: {
                $reduce: {
                    input: '$Subjects',
                    initialValue: '',
                    in: { $concat: ['$$value', ' ', '$$this'] }
                }
            },
            Name1: 1
        }
    },
    {
        $project: {
            'ConcatResult': { $concat: ['$Name1', '$values'] }
        }
    }
]);

Kết quả

{ "_id": ObjectId("..."), "ConcatResult": "Chris MySQL MongoDB Java" }

Giải thích:

  1. Stage 1: $reduce nối mảng Subjects thành chuỗi " MySQL MongoDB Java"
  2. Stage 2: $concat ghép Name1 + chuỗi trên

Cải tiến: Dùng $join (MongoDB 4.4+) đơn giản hơn: { $join: ["$Subjects", " "] }.