我想从 mongo shell 将图像文件读入 MongoDB 文档的二进制字段。我可以使用 MongoDB Java 驱动程序在 Java 中执行此操作。但是,我希望能够使用 mongo shell 中的 mongo 脚本进行操作。这可能吗?
例如,我想这样做:
D:\mongo\bin> mongo --shell myscript.js
其中 myscript.js 如下:
conn = new Mongo();
db = conn.getDB("mydb");
db.mycoll.remove();
db.mycoll.insert( { name : "LCD monitor",
thumbnail : Binary(0, **cat("D:\\images\\lcdmonitor.jpg")**)
} );
事实上,使用 cat() 方法会给出“InternalError:缓冲区太小(匿名):1”,因为 cat() 仅用于读取文本文件。
我应该使用哪种方法/函数来代替 cat() 来完成这项工作?
这可以在 mongo shell 中完成吗?
我不知道直接从 Mongo shell 读取二进制文件的方法。但是,如果您愿意在外部处理该文件并将其转换为base64
。请注意,无论如何您都必须执行一些转换,因为据我所知,您无法将原始二进制数据存储在 MongoDB 中。
在 Linux 上,我尝试了以下方法并验证其有效:
# Extract 1M random bytes, convert it to base64, and store it as /tmp/rrr
$ head -c 10000000 /dev/random | base64 > /tmp/r
$ mongo
> var r = cat ('/tmp/r') # Reads into r BUT then terminates it with a NL
> var rr = r.substring (0, r.length-1) # Remove the newline
> var p = BinData (0, rr) # bring it into p
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)