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

MongoDB $concatArrays

Di MongoDB, $concatArrays operator pipa agregasi menggabungkan dua atau lebih larik dan mengembalikan larik gabungan.

Contoh

Misalkan kita memiliki koleksi yang disebut data dengan dokumen berikut:

{ "_id" : 1, "a" : [ 1, 2, 3 ], "b" : [ 4, 5, 6 ] }

Kita dapat menggunakan $concatArrays operator untuk menggabungkan larik a bidang dengan larik b bidang:

db.data.aggregate([
    { $match: { _id: 1 } },
    { $project: { 
        _id: 0,
        result: { $concatArrays: [ "$a", "$b" ] }
        }
    }
])

Hasil:

{ "result" : [ 1, 2, 3, 4, 5, 6 ] }

Array Kosong

Menggabungkan array dengan array kosong tidak mengubah apa pun.

Misalkan koleksi kita juga berisi dokumen berikut:

{ "_id" : 2, "a" : [ 1, 2, 3 ], "b" : [ ] }

Mari kita terapkan $concatArrays untuk itu::

db.data.aggregate([
    { $match: { _id: 2 } },
    { $project: { 
        _id: 0,
        result: { $concatArrays: [ "$a", "$b" ] }
        }
    }
])

Hasil:

{ "result" : [ 1, 2, 3 ] }

Kami berakhir dengan larik pertama tanpa perubahan apa pun.

Bidang Tidak Ada

Mencoba menggabungkan bidang dengan bidang yang tidak ada menghasilkan null .

Bayangkan koleksi kami juga berisi dokumen berikut:

{ "_id" : 3, "a" : [ 1, 2, 3 ] }

Inilah yang terjadi ketika kita menerapkan $concatArrays ke a bidang dan bidang yang tidak ada:

db.data.aggregate([
    { $match: { _id: 3 } },
    { $project: { 
        _id: 0,
        result: { $concatArrays: [ "$a", "$b" ] }
        }
    }
])

Hasil:

{ "result" : null }

Jenis Data Lainnya

Setiap ekspresi diberikan ke $concatArrays dapat berupa ekspresi apa pun yang valid, selama ekspresi tersebut diselesaikan menjadi array.

Jika tidak menyelesaikan ke array, kesalahan dikembalikan.

Misalkan kita memiliki dokumen berikut:

{ "_id" : 4, "a" : [ 1, 2, 3 ], "b" : 4 }

Inilah yang terjadi jika kita mencoba menggabungkan a dan b bidang:

db.data.aggregate([
    { $match: { _id: 4 } },
    { $project: { 
        _id: 0,
        result: { $concatArrays: [ "$a", "$b" ] }
        }
    }
])

Hasil:

Error: command failed: {
	"ok" : 0,
	"errmsg" : "$concatArrays only supports arrays, not double",
	"code" : 28664,
	"codeName" : "Location28664"
} : aggregate failed :
[email protected]/mongo/shell/utils.js:25:13
[email protected]/mongo/shell/assert.js:18:14
[email protected]/mongo/shell/assert.js:618:17
[email protected]/mongo/shell/assert.js:708:16
[email protected]/mongo/shell/db.js:266:5
[email protected]/mongo/shell/collection.js:1046:12
@(shell):1:1

Dalam contoh ini saya mencoba menggabungkan array dengan double tapi saya mendapatkan error yang menyatakan $concatArrays hanya mendukung array, bukan double .


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Mengapa arah indeks penting di MongoDB?

  2. Apakah kerangka Agregasi Mongodb lebih cepat dari peta/kurangi?

  3. Cara Menginstal MongoDB di Ubuntu 18.04

  4. MongoDB $gantiSemua

  5. Kelompokkan berdasarkan nilai dan kondisi