0

MongoDB からこの形式の JSON があり、同じクエリに基づいてドキュメントを取得したいと考えています。

 {
      "_id" : ObjectId("5281fb3070c68c0c1ccc4f00"),
      "channel" : "1",
      "content" : "8578",
      "duplicateOf" : null,
      "id" : "7420",
      "keywords" : [ObjectId("52816d3370c68c2c1c450500"), ObjectId("52816d3370c68c2c1c570500"), ObjectId("52816d3370c68c2c1c470500"), ObjectId("52816d3370c68c2c1c4d0500"), ObjectId("52816d3370c68c2c1c590500"), ObjectId("52816d3370c68c2c1c530500"), ObjectId("52816d3370c68c2c1c4f0500"), ObjectId("52816d3370c68c2c1c6b0500")],
      "lastUpdate" : "2009-11-16"]
    }

このクエリを MongoVue で使用すると、次のように機能します。

   db.Measurements.find({ "_id" : 
{ "$in" : [ObjectId("5281fb3070c68c0c1ccc4f00"), ObjectId("5281fb3070c68c0c1cce4f00")] } })

しかし、PHPで機能させる方法が見つかりません。コードの一部は次のとおりです。

 foreach ($series as $doc) {

       $ids = $collectionMeasurements->find(array('_id' => array($in=>new MongoId($doc[keywords]))));
    }

ご協力いただきありがとうございます!!!

================================================== === エラーを発見!!!

 foreach ($series as $doc) {

 $ids = $collectionMeasurements->find(array('_id' => array(
           '$in'=>array(new MongoId(string)($doc[keywords])))));
    }
4

2 に答える 2

1

$inPHPの変数になります。文字列である必要があります (とにかく MongoVue コードにあるように)

array("$in" => new MongoId(

$inこれは、 のパラメータとしての配列である必要がある場合もあります。array(new MongoId または$series、おそらく渡すことができます。

于 2013-11-12T14:50:24.043 に答える
0

使用している

array( $in => new MongoId($doc[keywords]) )

以下を使用する必要があります。

array( '$in' => new MongoId($doc[keywords]) )

「一重引用符」を使用します。それ以外の場合は「二重引用符」を使用すると、PHP は $in を PHP 変数として解釈しようとします。

于 2014-02-02T17:16:02.097 に答える