MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Golang mongodb tổng hợp

Bạn không thể áp dụng $ lookup mảng trực tiếp, nhưng bạn có thể $ thư giãn nó đầu tiên.

Không có tài liệu mẫu, đoạn mã dưới đây là một cách tiếp cận chung:

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)

Tôi nên đề cập rằng tổng hợp / đường ống trả về bson.M , không phải đối tượng Người dùng ngậm nước. Mongo không phải là một cơ sở dữ liệu quan hệ.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Lỗi khi bật mã hóa dữ liệu bằng khóa cục bộ MONGODB

  2. Không tìm thấy lớp 'MongoDB \ Driver \ Manager'

  3. Mongodb:Thực hiện truy vấn Phạm vi ngày từ ObjectId trong trình bao mongo

  4. Chuỗi Mongoose thành ObjectID

  5. Cách giám sát máy chủ cơ sở dữ liệu của bạn bằng ClusterControl CLI