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

Agregasi Golang mongodb

Anda tidak dapat menerapkan $lookup ke array secara langsung, tetapi Anda dapat $unwind itu dulu.

Tanpa dokumen contoh, cuplikan kode di bawah ini lebih merupakan pendekatan umum:

pipeline := []bson.M{ 
    bson.M{"$match": bson.M{"_id": userId }},
    bson.M{"$unwind": "$otherUsersIdsArrayName"},
    bson.M{
        "$lookup": bson.M{ 
            "from": userCollectionName, 
            "localField": otherUsersIdsArrayName, 
            "foreignField": "id", 
            "as": "friend"
        }
    },
    bson.M{"$unwind": "$friend"},
    bson.M{
        "$group": bson.M{
            "_id": "id",
            "id": bson.M{"$first": "$id"},
            "name": bson.M{"$first": "$name"},
            "avatar": bson.M{"$first": "$avatar"},
            otherUsersIdsArrayName: bson.M{ "$push": "$friend"}
        }
    }
}
pipe := collection.Pipe(pipeline)
resp := []bson.M{}
err = pipe.All(&resp)

Saya harus menyebutkan bahwa agregasi/pipa mengembalikan bson.M , tidak terhidrasi objek Pengguna. Mongo bukanlah database relasional.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana saya bisa berbagi model luwak di antara 2 aplikasi?

  2. cara menghapus array yang diajukan dengan nilai nol setelah tidak disetel di mongodb

  3. Menggunakan Joda-Time untuk membentuk ISODate yang benar untuk sisipan Mongo

  4. Bagaimana cara membuat tes junit menggunakan mongoDB yang disematkan dalam aplikasi springboot?

  5. Beberapa penggunaan operator `$` posisional untuk memperbarui array bersarang