Я использую c#
драйвер (2.7.2)
до mongoDB
и GridFS
для хранения двоичных файлов.
Я хотел бы сохранить набор фотографий / картинок (binary
файлов в целом) в коллекции, которые являются дочерними элементами другого документа (сопоставлены с этим документом - другими словами, каждый документ имеет свой собственный наборфото).
Скажем, у меня есть такой документ в коллекции:
{
"_id" : ObjectId("5c1b6ba0681ecb1bf8d59f06"),
"Name" : "John",
"Surname" : "Doe",
"Height" : 180,
"Weight" : 100,
"Photos" : [
// ????
]
}
Я написал вопросительные знаки в разделе Photos
, потому что я не знаю, как они будут храниться в mongoDB,Мой документ должен иметь свои фотографии в базе данных.Скажем, у меня есть несколько локальных фотографий, таких как:
C:\Photos\JohnDoe\1.jpg
C:\Photos\JohnDoe\2.jpg
C:\Photos\JohnDoe\3.jpg
Мои models
классы такие:
public class Employee
{
[BsonId]
public ObjectId IDEmployee { get; set; }
public string Name { get; set; }
public string Surname { get; set; }
public double Height { get; set; }
public double Weight{ get; set; }
public List<Photo> Photos { get; set; }
}
public class Photo
{
[BsonId]
public ObjectId IDPhoto { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public DateTime CreatedAt { get; set; }
}
Photo
имеет свои ID
([BsonId]
) потому что я хочу иметь возможность изменить его.Например добавить описание.
Мой код для тестирования вещей выглядит следующим образом:
var client = new MongoClient();
var database = client.GetDatabase("Test");
var collection = database.GetCollection<Employee>("EmployeeCollection");
var bucket = new GridFSBucket(database, new GridFSBucketOptions
{
BucketName = "photos",
ChunkSizeBytes = 1048576, // 1MB
WriteConcern = WriteConcern.WMajority,
ReadPreference = ReadPreference.Secondary
});
string path = @"C:\Photos\JohnDoe\1.jpg";
using (var stream = bucket.OpenUploadStream(path))
{
var id = stream.Id;
// How to store this file in a database ??
stream.Close();
}
Первое - я не знаю, должен ли мой класс модели Photo
иметь что-то дополнительное с binary files
.
Второе - я не знаю, как написать правильный код для хранения этих фотографий в mongoDB
.
Я хотел бы использовать метод OpenUploadStream()
для хранения фотографий.Может кто-нибудь привести пример?
РЕДАКТИРОВАТЬ
На самом деле приветствуется любой способ (не только OpenUploadStream()
метод) хранения двоичного файла с использованием mongoDB.