我有一个来自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])))));
}
答案 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变量。