mongodb - проблема с тем же именем файла в fs.files GridFS - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть несколько файлов в коллекции fs.files в mongodb GridFS с одним и тем же именем, но для разных пользователей.

Когда я использую запрос ниже:

db.fs.files.find({"metadata.folder" : { "$exists": false,"metadata.msgid" : { "$exists": false}},{"metadata.user":1, "_id":0, "filename":1}).pretty()

Я получаю результат как:

{ "filename" : "standard.wav", "metadata" :
{ "user" : "101" }

}
{ "filename" : "standard.wav", "metadata" :
{ "user" : "100" }

}
{ "filename" : "standard.wav", "metadata" :
{ "user" : "104" }

}

Файлы различны для всех пользователей, но имеют одинаковые имена.

Поэтому, когда я использовал следующие команды для хранения файлов в локальной системе для разных пользователей, он всегда сохраняет один и тот же файл для всех пользователей.

Для пользователя 101:

mongofiles --uri MONGO_DSN -d test -l /home/user/101/standard.wav get standard.wav

Для пользователя 100:

mongofiles --uri MONGO_DSN -d test -l /home/user/100/standard.wav get standard.wav

Для пользователя 104:

mongofiles --uri MONGO_DSN -d test -l /home/user/104/standard.wav get standard.wav

В нем должны храниться разные файлыдля разных пользователей.

Заранее спасибо.

1 Ответ

0 голосов
/ 14 февраля 2019

Я решил это, используя параметр get_id вместо get.

Итак, моя команда сейчас:

Для пользователя 101:

mongofiles --uri MONGO_DSN -d test -l /home/user/101/standard.wav get_id $object101

ДляПользователь 100:

mongofiles --uri MONGO_DSN -d test -l /home/user/100/standard.wav get_id $object100

Для пользователя 104:

mongofiles --uri MONGO_DSN -d test -l /home/user/104/standard.wav get_id $object104

Здесь мои $object101, $object100, $object104 являются расширенными JSON _id объекта в GridFS.

Ссылки:

  1. mongofiles: получить файл по _id в дополнение к имени файла
  2. MongoFiles
...