How to recover a Mongo binary with C #?

0

I have saved images in a Mongo collection and now I need to recover that binary, my collection is called photos.

These are my advances:

 string conn = "mongodb://localhost";
 var client= new MongoClient(conn);
 var server = client.GetServer();
 var db = server.GetDatabase("students");
 var photos = db.GetCollection<Photos>("photos");

 // Este es el Query
 var query = Query.EQ("_id", ObjectId.Parse("58757e7cdc08a71e7835269b"));

 //Muestra los datos que cumplen con el Query
 var datos= db.FindAs<BsonDocument>(query).SetLimit(1).FirstOrDefault();

 //Me muestra el binario pero como String     
 string binario= datos["data"].AsBsonBinaryData.ToString();
  

What do I intend to achieve?

Save that binary but in another collection.

Thanks !!!

    
asked by Rastalovely 11.01.2017 в 07:00
source

1 answer

0

This is the way I solved my problem:

//Declarar las variables
protected static IMongoClient clienteLocal = new MongoClient();
protected static IMongoDatabase dataLocal = clienteLocal.GetDatabase("base");

//En el evento de tu Botón
var collectionfschunks = dataLocal.GetCollection<BsonDocument>("data.chunks");
// De acuerdo al Driver utilizado la base de los Binarios puede llamarse data.chunks o fs.chunks
var query7 = Builders<BsonDocument>.Filter.Eq("files_id", id);
var ultimo7 = collectionfschunks.Find<BsonDocument>(query7).FirstOrDefault();
ObjectId chunksid = ObjectId.Parse(ultimo7["_id"].ToString());
int n = int.Parse(ultimo7["n"].ToString());
byte[] data = ultimo7["data"].AsBsonBinaryData.Bytes;
//Este es el Binario de la colección

To save this binary to another collection, just create a Bson object

var document = new BsonDocument
        {
        { "files_id",idphoto},
        { "n",  n},
        { "data", data },
        { "_id", chunksid }
        };
 var collectionx = dataLocal.GetCollection<BsonDocument>("base_copia");
 collectionx.InsertOneAsync(document);
    
answered by 03.03.2017 в 16:28