Perl和MongoDB:将对象数组插入键值对

Perl和MongoDB:将对象数组插入键值对,perl,mongodb,Perl,Mongodb,我想使用perl在MongoDB中插入以下BSON结构: {"name" : "BOB", "stuff" : [{"area1": [1,2,3,4,5]}, {"area2": [5,6,7,8,9]}]} 但我很难找到一个好的例子。我尝试了以下方法: #!/usr/bin/perl use MongoDB; use MongoDB::Database; use MongoDB::OID; my $conn = MongoDB::Connection->new; my $db =

我想使用perl在MongoDB中插入以下BSON结构:

{"name" : "BOB", "stuff" : [{"area1": [1,2,3,4,5]}, {"area2": [5,6,7,8,9]}]}
但我很难找到一个好的例子。我尝试了以下方法:

#!/usr/bin/perl
use MongoDB;
use MongoDB::Database;
use MongoDB::OID;

my $conn = MongoDB::Connection->new;
my $db = $conn->test;
my $users = $db->real_time10;


$users->insert
({
    "name" => "BOB",
    "stuff" => 
              "area1" => [1,2,3,4,5],
              "area2" => [5,6,7,8,9]
});
在mongo shell中查询时大致输出:

db.real_time10.find()

发生了什么事?有没有一个简单的方法可以做到这一点

我的梦想/期望输出是:

> db.real_time10.find()

{ "_id" : ObjectId("4fc912fa000207ec08000000"), "stuff" : {"area1" : [1,2,3,4,5],   
"area2": [5,6,7,8,9]}, "name" : "BOB" }

示例代码中缺少匿名数组构造函数(方括号),但在BSON示例中包含它们。要获得所需的输出,请尝试:

$users->insert({
    "name" => "BOB",
    "stuff" => {
        "area1" => [1,2,3,4,5],
        "area2" => [5,6,7,8,9]
    }
});
通过排除数组构造函数,它将使用提供的数组键、值对构建一个哈希,以便将其解析为以下内容(与数据转储匹配):


注意:标量上下文中的数组引用将被视为类似“array(0x6052b8)”的字符串。

示例代码中缺少匿名数组构造函数(方括号),但在BSON示例中包含它们。要获得所需的输出,请尝试:

$users->insert({
    "name" => "BOB",
    "stuff" => {
        "area1" => [1,2,3,4,5],
        "area2" => [5,6,7,8,9]
    }
});
通过排除数组构造函数,它将使用提供的数组键、值对构建一个哈希,以便将其解析为以下内容(与数据转储匹配):

注意:标量上下文中的数组引用将被视为类似“array(0x6052b8)”的字符串

#!/usr/bin/perl
use MongoDB;
use MongoDB::Database;
use MongoDB::OID;

my $conn = MongoDB::Connection->new;
my $db = $conn->test;
my $users = $db->real_time10;


$users->insert({
    "name" => "BOB",
    "stuff" => 
          {"area1" => [1,2,3,4,5],
          "area2" => [5,6,7,8,9]}

});
这将产生:

{ "_id" : ObjectId("4fc91f110064e9d40b000000"), "name" : "BOB", "stuff" : { "are
a2" : [ 5, 6, 7, 8, 9 ], "area1" : [ 1, 2, 3, 4, 5 ] } }
啊,是这样的:

#!/usr/bin/perl
use MongoDB;
use MongoDB::Database;
use MongoDB::OID;

my $conn = MongoDB::Connection->new;
my $db = $conn->test;
my $users = $db->real_time10;


$users->insert({
    "name" => "BOB",
    "stuff" => 
          {"area1" => [1,2,3,4,5],
          "area2" => [5,6,7,8,9]}

});
这将产生:

{ "_id" : ObjectId("4fc91f110064e9d40b000000"), "name" : "BOB", "stuff" : { "are
a2" : [ 5, 6, 7, 8, 9 ], "area1" : [ 1, 2, 3, 4, 5 ] } }

酷-这更接近我想要的,现在我明白了我奇怪的输出。也就是说,当我查询我的数据库时,我现在得到了以下信息:
{“\u id”:ObjectId(“4fc91d0600eaf50480000”),“name:“BOB”,“stuff:”[“are
a1”,“1,2,3,4,5],“area2”,“5,6,7,8,9]]
这似乎更像是包含数组的数组,而不是对应于键值对的对象数组。我会用我的梦想输出更新这个问题,哈哈。酷-这更接近我想要的,现在我明白了我奇怪的输出。也就是说,当我查询我的数据库时,我现在得到了以下信息:
{“\u id”:ObjectId(“4fc91d0600eaf50480000”),“name:“BOB”,“stuff:”[“are
a1”,“1,2,3,4,5],“area2”,“5,6,7,8,9]]
这似乎更像是包含数组的数组,而不是对应于键值对的对象数组。我将用我的梦想输出更新这个问题,哈哈。看到我更新的答案,但看起来你自己解决了。祝你好运。看看我的最新答案,但看起来你自己找到了答案。祝你好运