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

Apakah ada cara untuk mendapatkan irisan sebagai hasil dari Find()?

Hasil dari find() Mon MongoDB selalu daftar dokumen. Jadi, jika Anda menginginkan daftar nilai, Anda harus mengonversinya secara manual seperti yang Anda lakukan.

Menggunakan tipe khusus (berasal dari string )

Perhatikan juga bahwa jika Anda ingin membuat jenis Anda sendiri (berasal dari string ), Anda dapat mengganti logika unmarshalingnya, dan "mengekstrak" username saja dari dokumen.

Seperti inilah tampilannya:

type Username string

func (u *Username) SetBSON(raw bson.Raw) (err error) {
    doc := bson.M{}
    if err = raw.Unmarshal(&doc); err != nil {
        return
    }
    *u = Username(doc["username"].(string))
    return
}

Dan kemudian menanyakan nama pengguna menjadi irisan:

c := mongodb.DB("mybase").C("mycollection") // Obtain collection

var uns []Username
err = c.Find(nil).Select(bson.M{"username": 1, "_id": 0}).All(&uns)
if err != nil {
    fmt.Println(err)
}
fmt.Println(uns)

Perhatikan bahwa []Username tidak sama dengan []string , jadi ini mungkin atau mungkin tidak cukup untuk Anda. Jika Anda memerlukan nama pengguna sebagai nilai string bukannya Username saat memproses hasilnya, Anda cukup mengonversi Username ke string .

Menggunakan Query.Iter()

Cara lain untuk menghindari penyalinan irisan adalah dengan memanggil Query.Iter() , ulangi hasil dan ekstrak dan simpan username secara manual, sama seperti logika unmarshaling kustom di atas.

Seperti inilah tampilannya:

var uns []string
it := c.Find(nil).Select(bson.M{"username": 1, "_id": 0}).Iter()
defer it.Close()
for doc := (bson.M{}); it.Next(&doc); {
    uns = append(uns, doc["username"].(string))
}
if err := it.Err(); err != nil {
    fmt.Println(err)
}
fmt.Println(uns)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Perbarui objek MongoDb dalam array pada kemunculan pertama dari yang terakhir

  2. Bagaimana cara menulis kueri SQL ini dalam sintaks Mongodb?

  3. Mendekode Log Kesalahan MongoDB

  4. Membandingkan Pola Penerapan untuk MongoDB

  5. Bagaimana cara menentukan kriteria untuk mengecualikan dokumen dari kueri?