2

画像ファイルを mongo シェルから MongoDB ドキュメントのバイナリ フィールドに読み込みたいと思います。これは、MongoDB Java ドライバーを使用して Java で実行できます。ただし、mongo シェルから 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: buffer too small (anon):1」が返されます。これは、cat() がテキスト ファイルの読み取り専用であるためです。

これを機能させるには、 cat() の代わりにどのメソッド/関数を使用すればよいですか? これはmongoシェルで行うことができますか?

4

1 に答える 1

-1

Mongo シェルからバイナリ ファイルを直接読み取る方法がわかりません。ただし、ファイルを外部で処理して に変換する場合は、その方法を知っています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
于 2013-06-08T22:52:05.967 に答える