sql >> Database >  >> NoSQL >> MongoDB

Golang mongodb-aggregatie

U kunt $lookup niet toepassen om direct te array, maar je kunt om $unwind het eerst.

Zonder voorbeelddocumenten is het onderstaande codefragment eerder een algemene benadering:

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)

Ik moet vermelden dat aggregatie/pipe bson.M returns retourneert , niet gehydrateerd Gebruikersobjecten. Mongo is tenslotte geen relationele database.




  1. Sorteren op maximaal matrixveld, oplopend of aflopend

  2. pymongo kan geen verbinding maken met de database op de externe server

  3. Django app SSL-socket verbinding met firmware

  4. Een SQL LIKE-instructie gebruiken in MongoDB