GridFS eserleri gibi sorgulayabilir. Bu şekilde, tüm dosyayı RAM'da saklamak zorunda kalmadan çok büyük dosyaları teslim edebilir ve depolayabilirsiniz. Ayrıca, bu, maksimum belge boyutundan daha büyük dosyaları depolamanıza olanak tanır. Önerilen yığın boyutu 256 kb'dir. Dosya meta veri alanı, meta verileri ayrı bir belgede depolamaktan daha verimli olabilen ek dosyaya özgü meta verileri depolamak için kullanılabilir. Bu, tam olarak sizin gereksinimlerinize bağlıdır, ancak meta veri alanı genel olarak çok fazla esneklik sunar. Eğer fs.files
dosya belge getirmesi gerekecek aslında GridFS dosyayı okumak için
> db.fs.files.findOne();
{
"_id" : ObjectId("4f9d4172b2ceac15506445e1"),
"filename" : "2e117dc7f5ba434c90be29c767426c29",
"length" : 486912,
"chunkSize" : 262144,
"uploadDate" : ISODate("2011-10-18T09:05:54.851Z"),
"md5" : "4f31970165766913fdece5417f7fa4a8",
"contentType" : "application/pdf"
}
ve parçaları dan: varsayılan olarak, daha açık meta bazıları zaten fs.files
belgesinin parçası olduğunu unutmayın fs.chunks
. Bunu yapmanın en etkili yolu, bunu istemcinin yığın-yığınına aktarmasıdır, böylece tüm dosyayı RAM'e yüklemeniz gerekmez. chunks
toplama aşağıdaki yapıya sahiptir:
> db.fs.chunks.findOne({}, {"data" :0});
{
"_id" : ObjectId("4e9d4172b2ceac15506445e1"),
"files_id" : ObjectId("4f9d4172b2ceac15506445e1"),
"n" : 0, // this is the 0th chunk of the file
"data" : /* loads of data */
}
Eğer dot notation mutlaka öğrenin, mesela senin sorguları için fs.files
ait metadata
alanını kullanmak isterseniz
> db.fs.files.find({"metadata.OwnerId": new ObjectId("..."),
"metadata.ImageWidth" : 280});
da sorgularınız explain()
kullanarak bir dizin kullanabilirsiniz emin olun.
Bir meta veri alanında kullanılabilir dizin oluşturmak nasıl oluşturulur? –
Basitçe bir şemaya sahip olmayan bir şemaya sahip olmama gibi bir indeksi oluşturabilirsiniz. – mnemosyn