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

Khuôn khổ tổng hợp MongoDB $ group có thể trả về một mảng giá trị không?

Việc kết hợp hai trường thành một mảng giá trị bằng Khung tổng hợp là có thể, nhưng chắc chắn là không đơn giản như nó có thể (ít nhất là ở MongoDB 2.2.0).

Đây là một ví dụ:

db.metrics.aggregate(

    // Find matching documents first (can take advantage of index)
    { $match : {
        'array_serial' : array, 
        'port_name' : { $in : ports},
        'datetime' : { $gte : from, $lte : to}
    }},

    // Project desired fields and add an extra $index for # of array elements
    { $project: {
        port_name: 1,
        datetime: 1,
        metric: 1,
        index: { $const:[0,1] }
    }},

    // Split into document stream based on $index
    { $unwind: '$index' },

    // Re-group data using conditional to create array [$datetime, $metric]
    { $group: {
        _id: { id: '$_id', port_name: '$port_name' },
        data: {
            $push: { $cond:[ {$eq:['$index', 0]}, '$datetime', '$metric'] }
        },
    }},

    // Sort results
    { $sort: { _id:1 } },

    // Final group by port_name with data array and count
    { $group: {
        _id: '$_id.port_name',
        data: { $push: '$data' },
        count: { $sum: 1 }
    }}
)


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Các trường hợp sử dụng cho updateOne over findOneAndUpdate trong MongoDB

  2. Công bố ClusterControl 1.4.2 - Phiên bản DevOps

  3. Mongo DB Java 3.x Driver - Group By Query

  4. Mongodb $ nơi truy vấn luôn đúng với nodejs

  5. Làm thế nào để thực hiện addToSet bằng cách sử dụng trình điều khiển chính thức của Go?