查询提取数组mongodb和php中的文档

时间:2013-11-12 14:47:39

标签: php arrays mongodb

我有一个来自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])))));
    }

2 个答案:

答案 0 :(得分:1)

$in将是PHP中的变量。它需要是一个字符串(无论如何都是在你的MongoVue代码中)

array("$in" => new MongoId(

这也可能需要是一个数组作为$in的参数,就像在array(new MongoId 中一​​样,您可以传入$series

答案 1 :(得分:0)

您正在使用

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

您应该使用:

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

使用'单引号',否则使用“双引号”PHP会尝试将$ in解释为PHP变量。