mongodb - 读取 MongoDB 结果并在 SH shell 脚本中使用来创建符号链接(symbolic link)

标签 mongodb shell ubuntu sh

我有一个 MongoDB 集合,其中填充了用于演示的虚拟数据。 我在名为 example.jpg 的文件夹中有一个图像文件 对于集合中的每个 ID,我想创建一个从 ID.jpg 到 example.jpg 的符号链接(symbolic link)

例如,如果集合包含 3 个 id 为 345kjh34k5、8945ng49 和 3459t8u34 的文档,我想创建 3 个 345kjh34k5.jpg、8945ng49.jpg 和 3459t8u34.jpg 的符号链接(symbolic link),它们都指向 example.jpg

谢谢!

最佳答案

您需要创建一个打印 id 的 mongo 脚本,然后使用一个 bash 脚本循环遍历该脚本并为每个 id 创建一个链接。

这是一些代码。

设置 - 创建 Mongodb 虚拟集合

db = connect("test");
db.dummy.insert({ _id : "345kjh34k5" });
db.dummy.insert({ _id : "8945ng49" });
db.dummy.insert({ _id : "3459t8u34" });

设置 - 创建示例文件

文件名:file1.txt

File1 content. Blah blah blah.

MongoDB 脚本打印虚拟 ID

文件名:printDummyIds.js

db = connect("test");
var linkNames = db.dummy.find().map(function(doc){
        print( doc._id );
});

输出:

mongo --quiet printDummyIds.js 
345kjh34k5
8945ng49
3459t8u34

调用 mongo 然后创建软链接(soft link)的 Bash 脚本

文件名:createLinksFromIds.sh

echo Linking files to source.
echo Source: $1
ext="${1#*.}"
out="./out/"
mkdir $out
for id in $(mongo --quiet printDummyIds.js) 
do 
    lName=$out$id"."$ext ;
    echo Creating $lName ;
    ln -s $1 $lName ;
done

用法

createLinksFromIds.sh FILE_PATH
FILE_PATH is the file that you want to link.

示例:

bash createLinksFromIds.sh file1.txt

输出:

Linking files to source.
Source: file1.txt
Creating ./out/345kjh34k5.txt
Creating ./out/8945ng49.txt
Creating ./out/3459t8u34.txt

关于mongodb - 读取 MongoDB 结果并在 SH shell 脚本中使用来创建符号链接(symbolic link),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28181036/

相关文章:

javascript - 将磁盘空间存储在文件中

mongodb - MongoDB中的日期比较

shell - 对 parent 的 renice 会 renice child 吗?

perl - Shell 变量在双引号 Perl 单行中可见

linux - 守护进程 : fatal: failed to tell if . ... 是安全的

javascript - 在 JavaScript 中删除多行

c++ - Visual Studio Code C/Cpp : Edit configurations does not open c_cpp_properties. json

python - buildozer android NDK 不下载 Ubuntu

ruby-on-rails - 使用长度标准查询 MongoDB

mongodb - 是否可以在 MongoDB 之上实现多版本并发控制(MVCC)?