0

次のようなクエリを実行する必要があります。

db.subscribers.find({LISTID: 59, {$or: [{LANG: {$in: ['English', 'Spanish']} }, 
                                        {LANG: {$nin: ['Russian']} }]}  });

これは、英語またはスペイン語を知っている、または(および)ロシア語を知らないlistid59からすべてのサブスクライバーを取得することになっています。言語の代わりに、複数の値を持つことができる任意のフィールドが存在する可能性があります。このクエリはmongodbコンソールで機能するようです。この場合、1つのフィールドが複数の条件になる可能性があります。私は同じフィールドがいくつかの条件にないだろう、多分それは次のようなものである可能性があります:

$collection->find(array('LISTID' => $listId, 
                        array('$or' = array(LANG => array('$in' =>  array('English','Spanish')),

/*some other condition united with OR*/
                                                                        )));

PHPでこのクエリを作成する方法は?

4

3 に答える 3

6

これは、英語またはスペイン語を知っていて、中国語を知らないlistid59からすべてのサブスクライバーを取得することになっています。

それがクエリの目的である場合(「中国語」ではなく「ロシア語」を意味していると思います)、元のコンソールクエリがどのように機能するかわかりません。

db.subscribers.find({
    LISTID: 59,
    { $or: [
        { LANG: { $in: ["English", "Spanish"] } },
        { LANG: { $nin: ["Russian"] } }
    ] }
});

$orドキュメントによると、独自のオブジェクトにネストする必要はありません。また、特定のLISTIDで、2つの言語は知っているが別の言語は知らないドキュメントを探している場合は、次の$andようになります。

db.subscribers.find({
    LISTID: 59,
    $and: [
        { LANG: { $in: ["English", "Spanish"] } },
        { LANG: { $ne: "Russian" } }
    ]
});

これは、次のようにPHPに変換されます。

$collection->find(array(
    'LISTID' => $listId,
    '$and' => array(
        array('LANG' => array('$in' => array('English', 'Spanish'))),
        array('LANG' => array('$ne' => 'Russian')),
    ),
));
于 2012-05-18T17:35:32.223 に答える
1

解決策は次のようなものだと思います。

$number = $collection->find(array('LISTID' => $listId, 
                                  '$or' => array( array('LANG' => array('$in' => array('English', 'Spanish'))),
                                                  array('LANG' => array('$nin' => array('Russian'))),
                                                ) ))->count();
于 2012-05-18T15:56:24.960 に答える
1
// Find record according to specific column
$getfollower = $dbnew1->find(array('follower' => $follower),
                             array('page_name' => 1, 'id'=>1, '_id'=>0));
于 2013-05-08T09:54:37.787 に答える