假设我有一个名为Items的集合。我试图完成这样的文档结构:
{
"itemName": "Google Glass"
"description": "Awesome Gadget"
"*some_picture*": "*some_picture_object*"
}
我要存储的图像不会超过BSON文档的16MB上限,所以我不想使用GridFS。我怎样才能完成上面的结构?我是mongoDB的新手,很遗憾
答案 0 :(得分:1)
我在文档中包含图像数据的字段使用BinData格式。确切的用法取决于使用的语言。
对于PHP,从PHP手册http://www.php.net/manual/en/class.mongobindata.php获取的用例示例代码(集合中的商店图像文件):
<?php
$profile = array(
"username" => "foobity",
"pic" => new MongoBinData(file_get_contents("gravatar.jpg"), MongoBinData::GENERIC),
);
$users->save($profile);
?>
Perl http://api.mongodb.org/perl/current/MongoDB/DataTypes.html#Binary%20Data:
# non-utf8 string
my $string = "\xFF\xFE\xFF";
$collection->insert({"photo" => \$string});
上一个答案包含使用Python在MongoDB中保存图像的示例代码:saving picture to mongodb
答案 1 :(得分:0)
在“some_picture”中存储图像的字节(字符串)不应该阻止你(除了bson文档的上限之外)。当您选择文档并获取字节时,您将完全按照从磁盘读取字节时的方式对待它。
考虑一下,如果不使用$ project,在迭代你的集合时,必须通过网络发送图像(整个文档通过网络发送,除非你使用聚合管道或map / reduce)
在不知道您使用的语言以提供示例的情况下,我可以回答这个问题。