Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从MongoDB集合中的数组中获取值_Mongodb_Perl - Fatal编程技术网

从MongoDB集合中的数组中获取值

从MongoDB集合中的数组中获取值,mongodb,perl,Mongodb,Perl,下面是我的MongoDB收藏 { “_id”:ObjectId(“5b2a2ee19d332d0118b26dfe”), “名称”:“岩石”, “工作”:[ { “Id”:对象Id(“5b2b93c63629d0271ce366ae”), “作业名称”:“abc”, “作业跟踪”:[ "123" ] } ] } 我想获取这两个ObjectId值 my$cursor=$custColl->find( {'Job.JobName'=>“abc”,'Job.JobTrack'=>“123”}, {{

下面是我的MongoDB收藏

{
“_id”:ObjectId(“5b2a2ee19d332d0118b26dfe”),
“名称”:“岩石”,
“工作”:[
{
“Id”:对象Id(“5b2b93c63629d0271ce366ae”),
“作业名称”:“abc”,
“作业跟踪”:[
"123"
]
}
]
}
我想获取这两个
ObjectId

my$cursor=$custColl->find(
{'Job.JobName'=>“abc”,'Job.JobTrack'=>“123”},
{{u id'=>1,'Job.id'=>1}
);
while(my$next=$cursor->next){
my$CustomerId=“$next->{u id}”;
my$JobId=“$next->{'Job.Id'}”;
说“$CustomerId=>$JobId\n”;
}
我从上面的代码中得到的结果如下

5b2a2ee19d332d0118b26dfe=>

使用此代码,我无法获取
$JobId

您需要访问
作业
数组的特定元素。因为在您的示例中只有一个元素,所以它的索引必须为零。因此你需要

my $JobId = "$next->{'Job.0.Id'}";

假设查询找到一个文档,
$next
是一个类似于原始JSON的Perl数据结构:

    {
      'Name' => 'Rock',
      '_id' => bless( {
                        'value' => '5b2a2ee19d332d0118b26dfe'
                      }, 'MongoDB::OID' ),
      'Job' => [
                 {
                   'JobName' => 'abc',
                   'JobTrack' => [
                                   '123'
                                 ],
                   'Id' => bless( {
                                    'value' => '5b2b93c63629d0271ce366ae'
                                  }, 'MongoDB::OID' )
                 }
               ]
    }
要获取作业ID,需要使用Perl语法(而不是MongoDB语法)取消对该结构的引用:

my $JobId      = "$next->{Job}[0]{Id}";

请避免在帖子中使用HTML。堆栈溢出使用。我不熟悉Mango DB,但是不应该有一个数组索引在<代码> Boo.JooTrace的中间吗?像是Job.0.JobTrack之类的?因为
Job
是一个散列数组