akshaypjoshi
akshaypjoshi

Reputation: 1295

mongodb - issue with same file name in fs.files GridFS

I have multiple files in fs.files collection in mongodb GridFS with same name but for different Users.

When I use below query:

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

I get result like :

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

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

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

}

Files are different for all Users but having same name.

So when I used following commands to store files in local system for different users, it always store same file for all Users.

For User 101 :

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

For User 100 :

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

For User 104 :

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

It should store different files for different users.

Thanks in advance.

Upvotes: 1

Views: 838

Answers (1)

akshaypjoshi
akshaypjoshi

Reputation: 1295

I have solved it using get_id parameter instead of using get.

So my command now :

For User 101 :

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

For User 100 :

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

For User 104 :

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

Here my $object101, $object100, $object104 are extended JSON _id of the object in GridFS.

References :

  1. mongofiles: get file by _id in addition to filename
  2. MongoFiles

Upvotes: 1

Related Questions