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

Apa yang akan terjadi jika pelepasan diterapkan ke bidang yang tidak ada saat menggunakan agregasi di luwak

Tidak, tidak:

Berikut adalah contoh sederhana:

> db.test.insert({a:[1]})
> db.test.insert({})

> db.test.aggregate({$unwind:'$a'})
{ "_id" : ObjectId("557362a17b97d77c38793c21"), "a" : 1 }
// no error -- but unwind only the document having the `a` field.

Tapi:

> db.test.insert({a:2})
> db.test.aggregate({$unwind:'$a'})
// will result in error 15978:
// """Value at end of $unwind field path '$a' must be an Array,
//    but is a NumberDouble"""

Sesuai hasil edit Anda, jika Anda perlu menyimpan dokumen dengan hilang bidang untuk bersantai, Anda dapat $project nilai default menggunakan $ifNull :

> db.test.find()
{ "_id" : ObjectId("557362a17b97d77c38793c21"), "a" : [ 1 ] }
{ "_id" : ObjectId("557362a57b97d77c38793c22") }

> db.test.aggregate([
    {$project: { a: { $ifNull: ['$a', [ null ]]}}},
    {$unwind: "$a"}
])
{ "_id" : ObjectId("557362a17b97d77c38793c21"), "a" : 1 }
{ "_id" : ObjectId("557362a57b97d77c38793c22"), "a" : null }



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana cara meminta mongodb dengan "suka" menggunakan api Java?

  2. Bagaimana cara mengubah kueri MongoDB menjadi JSON?

  3. MongoDB $konversi

  4. Perbarui Elemen di Array

  5. Bagaimana cara membuat kursor tailable di MongoDB shell?