Estoy tratando de hacer una consulta básica que busca un documento donde un valor específico está dentro de una matriz. Tomemos el siguiente ejemplo:
{ "metadata": { "tenant": [ "tenant1", "tenant2", "tenant3" ] } } filter := bson.M{"metadata": bson.M{"tenant": "tenant1"}} collection := mongo.Database(DB).Collection(Collection) result := collection.FindOne(context.Background(), filter)El resultado aquí está vacío, intenté trabajar con $ elemmatch y tampoco funcionó. cuando saco la matriz de los metadatos, funciona.
Por favor ayuda.
Su filter filtra los documentos que tienen un campo de metadata que es un documento con un campo de tenant con valor de tenant1 .
Para buscar documentos que tengan un campo de metadata que sea un documento, que tenga una matriz de tenant que incluya el elemento tenant1 , concatene los nombres de los campos con un punto:
filter := bson.M{"metadata.tenant": "tenant1"}