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

MongoDB $anyElementTrue

Di MongoDB, $anyElementTrue operator pipa agregasi mengevaluasi array sebagai satu set dan mengembalikan true jika salah satu elemennya true .

Jika tidak ada elemen yang true , lalu mengembalikan false .

Elemen array adalah true jika tidak false , null , 0 , atau undefined .

Contoh

Misalkan kita memiliki koleksi dengan dokumen berikut:

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

Dokumen ini berisi larik.

Kita dapat menjalankan kueri berikut dengan $anyElementTrue untuk mengetahui apakah array berisi elemen apa pun yang bernilai true :

db.test.aggregate(
   [
     { $project: { 
        _id: 0,
        anyElementTrue: { $anyElementTrue: [ "$data" ] } } 
         }
   ]
)

Hasil:

{ "anyElementTrue" : true }

Dalam hal ini, semua elemen array dievaluasi menjadi true (yaitu tidak false , null , 0 , atau undefined ), dan jadi kami mendapatkan hasil dari true .

Bila Tidak Ada Elemen yang Benar

Mari tambahkan dokumen berikut ke koleksi:

{ "_id" : 2, "data" : [ false, undefined, 0, null ] }

Dan mari kita jalankan $anyElementTrue terhadap dokumen itu:

db.test.aggregate(
  [
    { $match: { _id: 2 } },
    { $project: { 
      _id: 0,
      anyElementTrue: { $anyElementTrue: [ "$data" ] } } 
        }
  ]
)

Hasil:

{ "anyElementTrue" : false }

Seperti yang bisa kita lihat di sini, $anyElementTrue dievaluasi menjadi false setiap kali array berisi false , null , 0 , atau undefined nilai.

Bila Array Berisi Benar dan Salah

Mari tambahkan dokumen berikut ke koleksi:

{ "_id" : 3, "data" : [ true, false ] }

Dan mari kita jalankan $anyElementTrue terhadap dokumen itu:

db.test.aggregate(
  [
    { $match: { _id: 3 } },
    { $project: { 
      _id: 0,
      anyElementTrue: { $anyElementTrue: [ "$data" ] } } 
        }
  ]
)

Hasil:

{ "anyElementTrue" : true }

Kami mendapatkan true , meskipun ada elemen lain yang false . Ini sudah diduga, karena $anyElementTrue mengembalikan true setiap kali ada setidaknya satu elemen yang true , terlepas dari berapa banyak elemen lain yang salah.

Array Kosong

Array kosong mengembalikan true .

Misalkan kita menambahkan dokumen berikut ke koleksi kita:

{ "_id" : 4, "data" : [ ] }

Dokumen ini berisi larik kosong.

Sekarang mari kita jalankan $anyElementTrue lagi:

db.test.aggregate(
  [
    { $match: { _id: 4 } },
    { $project: { 
      _id: 0,
      anyElementTrue: { $anyElementTrue: [ "$data" ] } } 
        }
  ]
)

Hasil:

{ "anyElementTrue" : false }

Ini mengembalikan false , karena array kosong bukan false .

Array Bersarang

$anyElementTrue operator tidak turun ke array bersarang apa pun. Ini mengevaluasi array di tingkat atas.

Oleh karena itu, apakah array bersarang berisi elemen yang true atau false tidak relevan dengan $anyElementTrue . Sejauh $anyElementTrue bersangkutan, array bersarang adalah elemennya, dan karena itu true .

Untuk mendemonstrasikan apa yang saya maksud, misalkan kita memasukkan dokumen berikut:

{ "_id" : 5, "data" : [ false, [ false ] ] }
{ "_id" : 6, "data" : [ false, false ] }

Sekarang mari kita jalankan $anyElementTrue terhadap dua dokumen tersebut:

db.test.aggregate(
  [
    { $match: {_id: { $in: [5,6] }} },
    { $project: { 
      anyElementTrue: { $anyElementTrue: [ "$data" ] } } 
        }
  ]
)

Hasil:

{ "_id" : 5, "anyElementTrue" : true }
{ "_id" : 6, "anyElementTrue" : false }

Kita dapat melihat bahwa dokumen pertama mengembalikan true dan yang kedua mengembalikan false .

Ini karena, larik di dokumen pertama berisi larik bersarang, yang cukup untuk mengembalikan true , terlepas dari isinya.

Dokumen kedua tidak berisi array bersarang – hanya berisi dua false nilai – dan karena itu dievaluasi menjadi false .


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB menarik elemen array dari koleksi

  2. Rentang kueri untuk pagination MongoDB

  3. ScaleGrid Mengumumkan Layanan Hosting MongoDB di Kanada

  4. Konversikan MongoDB BsonDocument ke JSON yang valid di C#

  5. Apa hak istimewa pengguna MongoDB yang saya perlukan untuk menambahkan pengguna ke database mongo baru/lain?