从MongoDB集合中的数组中获取值
下面是我的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”}, {{
{
“_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
是一个散列数组