如何在Perl中编写MongoDB $ exists查询?

时间:2018-01-04 11:38:07

标签: mongodb perl

db.getCollection('订户&#39)找到({$和:[{" registerFrom" {$存在:假}},{" googleRegistrationId&#34 ;:{$存在:真}},{" isGuest":"假"}]})

如何在Perl中编写上述查询请帮助。在perl上执行时,我得到的结果不同

我在perl中写过这样的文字

我的$ Subscriber2 = $ Subscriber-> find({' $和' => [{dateOfJoining => {' $ gt' => $ date}} ,{registerFrom => {' $ exists' =>' false'}},{googleRegistrationId => {' $ exists' =>&# 39; true'}},{isGuest =>' false'}]}) - > fields({_ id => 1,streamzCampaigns => 1});

我没有得到与在perl中执行时相同的结果。如何在Perl中使用$ exits of mongoDB。请帮助解决这个问题。

1 个答案:

答案 0 :(得分:1)

我看到的两个可疑位是你引用的" true"和"假" - 制作这些字符串,而不是布尔值 - 我想知道你为$date使用了什么,因为你在shell示例中没有这个。

这是你写的,格式很好:

my $Subscriber2 = $Subscriber->find(
    {
        '$and' => [
            { dateOfJoining        => { '$gt'     => $date } },
            { registerFrom         => { '$exists' => 'false' } },
            { googleRegistrationId => { '$exists' => 'true' } },
            { isGuest              => 'false' }
        ]
    }
)->fields( { _id => 1, streamzCampaigns => 1 } );

对于布尔值,您应该使用boolean.pm模块:

use boolean;

my $Subscriber2 = $Subscriber->find(
    {
        '$and' => [
            { dateOfJoining        => { '$gt'     => $date } },
            { registerFrom         => { '$exists' => false } },
            { googleRegistrationId => { '$exists' => true } },
            { isGuest              => false }
        ]
    }
)->fields( { _id => 1, streamzCampaigns => 1 } );