Count Array using Where statement in MongoDB and C #

0

in my collection Students I have an arrangement in MongoDB in the following way:

"_id" : "fAFhzdtJ7wpJbdfbp",
"Nombre" : "Rastalovely",
"Materias" : [ 
    "ZNumksY9STZxc8a8W", 
    "W6BPzEwTaz9E7FxZB"
]

The Matters field has a relationship with the Materias collection, for example:

"_id" : "ZNumksY9STZxc8a8W",
"MateriaNombre" : "Matematicas"

"_id" : "W6BPzEwTaz9E7FxZB",
"MateriaNombre" : "Ingles"

What I need is to show in a combobox the subjects that I am studying, in addition to let me know how many subjects course

  

My advances

//Conexión con la Base
protected static IMongoClient cliente = new MongoClient();
protected static IMongoDatabase base = cliente.GetDatabase("base");
var coleccion = base.GetCollection<BsonDocument>("alumnos");
var filtro = Builders<BsonDocument>.Filter.Eq("_id", parametro);// le envio el id del alumno
var cursor = coleccion.Find(filtro);
var listado = cursor.ToList();
foreach (var item in listado)
   {
     ComboBox1.Items.Add(item["Materias"]);
     ComboBox1.DisplayMember = item["Materias"].ToString();
     ComboBox1.ValueMember = item["_id"].ToString();
   }
   //dentro de mi foreach me muestra el id de mis materias, pero no su nombre ademas de que no encuentro la forma para contar las materias

In this way how many students there are

var collection = base.GetCollection<BsonDocument>("alumnos");
var query = Query.Empty;
var cuantos = collection.FindAs<BsonDocument(query).SetLimit(1).Count();
    
asked by Rastalovely 04.01.2017 в 08:26
source

1 answer

0

It occurred to me that within your foreach, you could make a query to your collection of materials.

var Materia = base.GetCollection<BsonDocument>("materias");

foreach (var item in listado)
{
    var query = Builders<BsonDocument>.Filter.Eq("_id", item._id);
    var materia = Materia.Find(query);
    // ahora agregas la materia con su nombre al combo box
    ComboBox1.Items.Add(item["Materias"]);
    ComboBox1.DisplayMember = item["Materias"].ToString();
    ComboBox1.ValueMember = item["nombre de la materia"].ToString();
}

Sorry for the errors in C #, I still do not have a driver for mongodb, but that's the idea.

    
answered by 05.01.2017 в 21:39