查询MongoDB GridFS元数据(Java)

seb*_*ian 10 java mongodb gridfs

我要做的是通过查询元数据字段来获取GridFS文件列表.例如,我有一个GridFS文件文档,如下所示:

{ "_id" : { "$oid" : "4f95475f5ef4fb269dbac954"} , "chunkSize" : 262144 , "length" : 3077 , "md5" : "f24ea7ac05c5032f08808c6faabf413b" , "filename" : "file_xyz.txt" , "contentType" :  null  , "uploadDate" : { "$date" : "2012-04-23T12:13:19.606Z"} , "aliases" :  null  , "metadata" : { "target_field" : "abcdefg"}}
Run Code Online (Sandbox Code Playgroud)

我想查询包含"target_field"="abcdefg"的所有文件.我创建了如下查询:

BasicDBObject query = new BasicDBObject("metadata", new BasicDBObject("target_field", "abcdefg"));
// gridFS Object Initialization skipped
List<GridFSDBFile> files = gridFs.find(query);
Run Code Online (Sandbox Code Playgroud)

该列表总是空的.否则查询文件名或uploadDate工作正常.是不是可以通过嵌套属性获取GridFS文件?

seb*_*ian 16

不幸的是,我没有使用嵌套的BasicDBObjects.

最后我使用了点符号,它工作得很好:

// This query fetches the files I need
BasicDBObject query = new BasicDBObject("metadata.target_field", "abcdefg"));
List<GridFSDBFile> files = gridFs.find(query);
Run Code Online (Sandbox Code Playgroud)