需要一点逻辑帮助。我有一个文件夹,我将通过 http/php/post 上传很多文件。我将在它们上传时将它们索引到 MongoDB 中的集合中。我需要将文件组织到不同的文件夹中,实际上不会有文件夹,但是当有人查看界面时,我会将其放在一起,看起来就像一棵文件树。我还将设置虚拟文件夹的权限。我一直在思考如何将文件索引到虚拟文件夹中并放入 Mongo 集合中,我遇到的困难是为每个用户分配权限。我正在考虑像这样索引文件和虚拟文件夹(对不起,代码很长,只是想让您了解文件树的深度):
$collection->insert(array(
'_id' => new MongoID(),
'type' => 'folder',
'folderOrFileNameAndLocation' => 'products'
));
$collection->insert(array(
'_id' => new MongoID(),
'type' => 'folder',
'folderOrFileNameAndLocation' => 'products/device'
));
$collection->insert(array(
'_id' => new MongoID(),
'type' => 'folder',
'folderOrFileNameAndLocation' => 'products/device/manuals'
));
$collection->insert(array(
'_id' => new MongoID(),
'type' => 'file',
'fileName' => 'theManual.pdf',
'location' => 'products/device/manuals/'
));
我的问题是如何在添加用户时为每个用户分配文件夹权限,这就是我的想法
$collection->insert(array(
'_id' => new MongoID(),
'username' => 'Joe',
'password' => '1234', //will obviously be one way hashed
//STORE AS A STRING
'permissibleFolders' => 'products/device/manuals/, software/latest/'
));
//OR SHOULD I DO IT THIS WAY???
$collection->insert(array(
'_id' => new MongoID(),
'username' => 'Joe',
'password' => '1234', //will obviously be one way hashed
'permissibleFolders' => array(
//DO I HAVE TO SET A KEY FOR THIS OR CAN I JUST ADD THEM IN?
products/device/manuals/,
software/latest/
)
));
现在通过这样做,我将如何查询分配给用户的文件夹?这就是我的想法,但是如何查询最后一部分?我可以使它与嵌套查询一起工作,但这是我尝试永远不会做的事情。
$pulledData = $collection->find(array('username' => $username, 'password' => $password));
$doesExist = $pulledData -> count();
if($doesExist == 1){
logUserInAndStuff();
foreach($pulledData as $row){
$accessibleFolders = $row['permissibleFolders'];
}
//HOW DO I MAKE THIS QUERY THE PROPER FOLDERS?
$pulledData = $collection->find(array('folderNameAndLocation'=>$accessibleFolders));
}
抱歉,如果我的逻辑很愚蠢,我对服务器的“拉动”以及我被允许做的事情非常有限。我一无所获,并期望通过一些伟大的事情来度过难关。有人可以帮助我想出的任何更好的方法都会很棒!我对 noSQL 很陌生,我可能想太多结构了,哈哈。