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

Bagaimana melakukan grup mongo di sisi server Meteor

Pada Meteor v1.0.4:

Jadi Anda bisa memanggil collection.rawCollection() untuk mendapatkan objek koleksi yang mendasarinya:

var rawCollection = Orders.rawCollection();

rawCollection . ini memiliki metode group yang setara dengan group metode di shell MongoDB. API simpul yang mendasarinya tidak sinkron, jadi Anda ingin mengubahnya menjadi fungsi sinkron. Kami tidak dapat menggunakan Meteor.wrapAsync langsung sejak group mengambil argumen fungsi yang bukan merupakan panggilan balik utama, jadi kami akan mengatasinya dengan pembungkus:

function ordersGroup(/* arguments */) {
    var args = _.toArray(arguments);
    return Meteor.wrapAsync(function (callback) {
        rawCollection.group.apply(rawCollection, args.concat([callback]));
    })();
}

Di dalam metode Anda, Anda dapat memanggil ordersGroup seperti yang Anda lakukan db.orders.group dalam cangkang Mongo. Namun, argumen diteruskan secara terpisah, bukan dalam objek:

ordersGroup(keys, condition, initial, reduce[, finalize[, command[, options]]])

Untuk informasi selengkapnya, lihat dokumentasi ini (walaupun perhatikan bahwa callback parameter harus ditinggalkan, karena pembungkus asinkron kami menanganinya).

Jadi, Anda harus meneruskannya secara terpisah:

var result = ordersGroup(
    // keys
    function(doc) {
        return { year: doc.createdAt.toISOString().substring(0, 4) };
    },

    // condition
    {createdAt: {$lt: new Date("2015-12-31"), $gt: new Date("2015-01-01")}},

    // initial
    {months: {}},

    // reduce
    function(order, result) {
        var month = order.createdAt.getMonth()+1,
            date = order.createdAt.getDate();

        month = result.months[month] || (result.months[month] = {});
        date = month[date] || (month[date] = []);
        date.push(order);
    }
);

Tentu saja, ini hanya berfungsi di server, jadi pastikan metode Anda dalam kode khusus server (sebaiknya di server subdirektori, atau di dalam if (Meteor.isServer) ).




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara mendapatkan nilai hitungan menggunakan $lookup di mongodb menggunakan golang?

  2. pymongo mendapatkan E11000 duplikat indeks kesalahan kunci kesalahan pymongo

  3. Cara menggunakan $in atau $nin dalam agregasi mongo $group $cond

  4. Kesalahan:queryTxt ETIMEOUT saat menghubungkan ke MongoDb Atlas menggunakan luwak

  5. Cara menemukan substring di bidang di Mongodb