2012-11-16 117 views
1

我有一个提供和复杂的查询与很多字段和排序的集合。其任务是在查询结果中仅查找具有查询数组和当前文档ID的前一个和下一个文档。所以我正在写一个javascript函数,它执行一个查询并进行排序并返回两个ID。问题是将php查询数组转换成正确的javascript对象。PHP和MongoDB。如何将PHP数组转换为JavaScript对象?

这样的事情,例如:

$query = array('city' => new MongoId('...'), 'price' => array('$gt' => 100000), ...); 
$sort = array('price' => -1); 
$code = new MongoCode("function findPrevNext() { db.offer.find($query).sort($sort).forEach(function(obj){ ... }) }"); 

我怎么能做出这样的转变?

+0

可能是json_encode? – xelber

回答

1

要在JavaScript中读取此数据,请从PHP回传的JSON上运行JavaScript的eval()函数。

编辑:这里还有别人的回答,他们在这里讨论了PHP中json_encode()的用法。

为了您的数组转换成JSON你会:

json_encode($my_array); 

要分析的数据转换为JavaScript对象,你会:

var myObject = eval(jsonStringFromPHP); 
+0

Downvote可能是eval()给出的。有更清晰的方式来处理客户端的JSON。例如http://stackoverflow.com/questions/4935632/how-to-parse-json-in-javascript –

+0

MongoDB不支持JSON.parse(),所以eval在这里没问题。 – Lisio

0

无需使用转换的。一切都可以使用标准工具来完成:

$code = 'function findNext(query, sort, current) { ... }'; 
$result = $mongo->command(array('$eval' => new MongoCode($code), 'args' => array($query, $sort, new MongoId($offer)), 'nolock' => true)); 
0

如果用PHP >= 5.3.0运行,你可以使用json_encode,可以采取options参数的优势。

json_encode($array, JSON_FORCE_OBJECT); 

JSON_FORCE_OBJECT

输出的对象,而不是在使用非关联数组的数组。当输出的接收者期待对象并且数组为空时特别有用。

相关问题