首页 > 解决方案 > mongodb - fs.files GridFS 中文件名相同的问题

问题描述

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

它应该为不同的用户存储不同的文件。

提前致谢。

标签: mongodbmongodb-querygridfs

解决方案


我已经使用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是 GridFS 中对象的扩展 JSON _id。

参考 :

  1. mongofiles:除了文件名之外,还通过 _id 获取文件
  2. Mongo文件

推荐阅读