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

Menjaga bidang di grup mongodb oleh

Saya percaya bahwa kueri ini adalah solusi untuk apa yang Anda tanyakan:

db.test.aggregate([
  // Filter the docs based on your criteria
  {$match: {
    type1: {$in: ['type1A', 'type1B']},
    type2: {$in: ['type2A', 'type2B']},
    'date.year': 2015,
    'date.month': 4,
    'date.type': 'day',
    'date.day': {$gte: 4, $lte: 7}
  }},

  // Group by iddoc and type1 and count them
  {$group: {
    _id: { iddoc: '$iddoc', type1: '$type1' },
    sum: {$sum: 1},
    type2: { $push: '$type2' },
    year: { $first: '$date.year' },
    month: { $first: '$date.month' },
    day: { $addToSet: '$date.day' }
  }},

  // Sort by sum, descending
  {$sort: {sum: -1}}
])

Ada beberapa opsi dengan cara Anda ingin melihat bidang lainnya. Saya memilih untuk mendorong type2 ke array (memungkinkan duplikat), ambil nilai pertama untuk year dan month karena itu akan selalu 2015 dan 4 per operasi pencocokan Anda, dan addToSet hari ke array (tidak mengizinkan duplikat). Opsi lainnya adalah mendorong seluruh dokumen ke dalam array yang cocok, tetapi kita harus berhati-hati dengan itu pada koleksi besar.

{$group: {
    _id: { iddoc: '$iddoc', type1: '$type1' },
    sum: {$sum: 1},
    matches: { $push: '$$ROOT' }
  }},



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Penggunaan Hibernate OGM dengan cloud MongoDB Atlas M0 (Tingkat Gratis)

  2. Kembalikan rangkaian hasil panggilan balik yang dipanggil dalam satu lingkaran

  3. model luwak untuk multi-jenis pengguna

  4. Menentukan Koleksi Sharded dengan Spring Data MongoDB

  5. Mongo Map Kurangi pilih tanggal terbaru