Mongodb 将控制台命令转换为ODM
我正试图用php和mongodb ODM运行这个精确的查询Mongodb 将控制台命令转换为ODM,mongodb,odm,Mongodb,Odm,我正试图用php和mongodb ODM运行这个精确的查询 db.runCommand ( { distinct: "messages", key: "conversation", query: { conversation: { $in: ["533f28c9211b6f7e448b4567","52cb29b0211b6fd9248b456b"] } } } ) 如何使用distinct
db.runCommand ( { distinct: "messages",
key: "conversation",
query: { conversation: { $in: ["533f28c9211b6f7e448b4567","52cb29b0211b6fd9248b456b"] } }
} )
如何使用distinct()进行转换?
谢谢。您可以看到我的实现: 定义在mongoDB中执行javascript查询的方法
/**
* Execute javascript in mongodb
*
* @param string $js JavaScript function
*
* @return array
*/
protected function executeJs($js)
{
// get database name
$mongoDatabaseName = $this->dm->getConfiguration()->getDefaultDB();
// get connection
$m = $this->dm->getConnection();
// return results, get mongodb client
return $m->getMongo()
// select database
->selectDB($mongoDatabaseName)
// execute javasctipt function
->command(array(
// js
'eval' => $js,
// no lock database, while js will be executed
'nolock' => true,
));
}
定义字符串查询
$_myQuery = 'function() {var messages = [];
db.runCommand ( { distinct: "messages",
key: "conversation",
query: { conversation: { $in: ["533f28c9211b6f7e448b4567","52cb29b0211b6fd9248b456b"] } }
}
).forEach(function(msg){ messages[]= msg });
return messages; }';
最后,执行查询
$messageCollection = $this->executeJs($_myQuery);
if(isset(messageCollection))
var_dump(messageCollection['retval']); // it will show result
我会先阅读你的ODM文档,不管是哪一个。如果您知道您正在使用的确切库以及您已经为此编写的任何代码,那就太好了。