mongodb - mongos aggregation 执行出错
PHP中文网
PHP中文网 2017-04-22 08:59:32
0
2
815

我想用mongo的聚合算个uv,但下面的命令,如图:

报错,aggregation result exceeds maximum document size (16MB)

文档中提到这个问题如图, http://docs.mongodb.org/manual/core/aggregation-pipeline-limits/,

请各位帮忙看看
感谢

PHP中文网
PHP中文网

认证高级PHP讲师

membalas semua(2)
Peter_Zhu

Terdapat terlalu banyak data untuk diproses. Anda boleh menggunakan $project untuk memilih medan seterusnya dahulu dan kemudian mengumpulkannya,

{$project:{
    xxx : 1,
    yyy : 1,
  }
}...
PHPzhong

Sintaks adalah betul Saya mencuba data berikut pada mesin saya:

> db.uv.find()
{ "_id" : ObjectId("52a102490e085e51aa153478"), "ip" : "127.0.0.1" }
{ "_id" : ObjectId("52a1024b0e085e51aa153479"), "ip" : "127.0.0.2" }
{ "_id" : ObjectId("52a1024c0e085e51aa15347a"), "ip" : "127.0.0.2" }
{ "_id" : ObjectId("52a1024e0e085e51aa15347b"), "ip" : "127.0.0.3" }

Selain padanan, saya menggunakan pertanyaan pengagregatan berikut:

db.uv.aggregate({
  $group: {
    _id: "$ip",
    uv: {
      $first: 1
    }
  }
}, {
  $group: {
    _id: "result",
    uv: {
      $sum: "$uv"
    }
  }
})

Hasilnya betul

{ "result" : [ { "_id" : "result", "uv" : 3 } ], "ok" : 1 }

Oleh kerana keputusan akhir hanya satu nombor, tidak sepatutnya ada ralat sedemikian. Untuk tujuan penyahpepijatan, adalah disyorkan untuk mengeluarkan keputusan setiap langkah dalam saluran paip. Tambah { $limit: 3 } selepas langkah untuk menjadi output, dan jalankan output tanpa mengikut langkah. Jika terdapat terlalu banyak data dan hasilnya terlalu perlahan, tambahkan had pada permulaan dan jalankannya pada data kecil dahulu.

Jika sukar untuk menukarnya berulang kali dan menjalankannya dalam cangkerang, tulis sahaja pada fail, dalam terminal

$ mongo < agg_uv.js

Pengubah hala input tidak boleh ditinggalkan, jika tidak, ia akan dijalankan dalam mod skrip, yang agak berbeza daripada mod interaktif.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!