MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Skema MongoDB yang Benar untuk data agregat

Akan merekomendasikan restrukturisasi skema lebih lanjut dalam Metode 2 untuk mengikuti skema ini:

/* 0 */
{
    "_id" : ObjectId("5577fd322ab13c8cacdd0e70"),
    "order_id" : "VjprK",
    "user_id" : "777",
    "data" : [ 
        {
            "order_date" : ISODate("2015-04-18T08:57:42.514Z"),
            "amount" : 100
        }, 
        {
            "order_date" : ISODate("2015-04-19T08:57:42.514Z"),
            "amount" : 200
        }, 
        {
            "order_date" : ISODate("2015-04-20T08:57:42.514Z"),
            "amount" : 300
        }, 
        {
            "order_date" : ISODate("2015-04-21T08:57:42.514Z"),
            "amount" : 400
        }
    ]
}

yang kemudian dapat Anda gabungkan dengan rentang tanggal tertentu, misalnya dari 2015-04-18 ke 2015-04-19 . Pertimbangkan alur berikut:

var start = new Date(2015, 3, 18),
    end = new Date(2015, 3, 20);

db.orders.aggregate([
    {
        "$match": {
            "user_id": "777",
            "data.order_date": {
                "$gte": start,
                "$lt": end
            }
        }
    },
    {
        "$unwind": "$data"
    },
    {
        "$match": {
            "data.order_date": {
                "$gte": start,
                "$lt": end
            }
        }
    },
    {
        "$group": {
            "_id": "$user_id",
            "total": {
                "$sum": "$data.amount"
            }
        }
    }    
])

Contoh Keluaran

/* 0 */
{
    "result" : [ 
        {
            "_id" : "777",
            "total" : 300
        }
    ],
    "ok" : 1
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Tarik entri dari array melalui Meteor

  2. Mongodb tidak dapat memulai

  3. Menemukan nilai duplikat dalam array MongoDB

  4. Bagaimana Anda bisa menentukan urutan properti dalam objek javascript untuk indeks MongoDB di node.js?

  5. Gambaran Umum Operator Percona MongoDB Kubernetes