MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Tổng hợp và giảm bớt một mảng lồng nhau dựa trên một ObjectId

Bạn có thể sử dụng $ filter với $ map để định hình lại dữ liệu của bạn và lọc theo _id . Sau đó, bạn có thể tiếp tục sử dụng $ push với $ ifNull để cung cấp giá trị mặc định nếu một mảng trống:

db.collection.aggregate([
    {
        $addFields: {
            employeeResponses: {
                $map: {
                    input: {
                        $filter: {
                            input: "$employeeResponses",
                            cond: {
                                $eq: [ "$$this._id", "5d978d372f263f41cc624727"]
                            }
                        }
                    },
                    in: "$$this.response"
                }
            }
        }
    },
    {
        $group: {
            _id: null,
            responses: { $push: { $ifNull: [ { $arrayElemAt: [ "$employeeResponses", 0 ] }, "No response" ] } }
        }
    }
])

Sân chơi Mongo




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Cách tìm bản ghi ngẫu nhiên trong mongodb

  2. Phần tử mảng cập nhật Mongo (trình điều khiển .NET 2.0)

  3. Mongoose SSL, kết nối không được chấp nhận

  4. Tại sao tôi không thể chạy giải thích trên bản cập nhật MongoDB?

  5. Tổng số các di tích phụ ở Mongoose