0

Mongo ドキュメントに次のタイプのオカレンスがあります。

"tags" : [ [ "narnia" ], [ "aslan" ], [ "winter" ], [ "heaven" ] ]

任意の数のタグをすべて照合して、このドキュメントを見つける方法を知る必要があります。つまり、ナルニア AND アスラン (ただし、ナルニア OR アスランではありません)。

クエリは PHP で作成する必要があります。

これまでのところ、単一のタグでしか機能していません。いえ

$filter['tags'] = array('$in' => array(array('Narnia')));
4

1 に答える 1

1

フセインがコメントで述べたように、不要な配列を格納しているように見えるため、そのドキュメント構造を修正することをお勧めします。

$andそれ以外の場合は、ステートメントを使用して実行できます(ネストされた配列を使用しない例)。

PRIMARY> db.wardrobe.find({ $and: [ { tags: "narnia" }, { tags: "tugboat" } ] })
//returns nothing

PRIMARY> db.wardrobe.find({ $and: [ { tags: "narnia" }, { tags: "winter" } ] })
//returns { "_id" : ObjectId("521067a48202463b88c2a0c9"), "tags" : [ "narnia", "aslan", "winter", "heaven" ] }

PHP の場合:

//With your nested arrays:
$filter = array(
   '$and' => array( 
      array('tags' => array('narnia') ), 
      array('tags' => array('aslan') )
   )
);

//With a simple array:
$filter = array(
   '$and' => array( 
      array('tags' => 'narnia'), 
      array('tags' => 'aslan')
   )
);

$mongoClient->selectCollection('cwlewis', 'wardrobe')->find( $filter );
于 2013-08-18T06:39:40.047 に答える