1

我的问题是如何将来自 mongodb 的以下 js 代码转换为 php:

t.find( { group:3, 'xa':2 }, { 'x.$':1 } ).toArray()[0].x.length, "单个对象匹配(数组长度匹配)" );

您可以在以下位置找到整个 js 代码:

https://github.com/mongodb/mongo/blob/83ec59844bdd629b2b32a9791a4e7a0e93516c02/jstests/elemMatchProjection.js

基本上我关心的是如何翻译成 php toArray()[0].x.length ?我知道 php 有计数,但我不在乎。我还有其他高级查询,所有这些都归结为这个问题。

4

1 回答 1

1

的字面翻译toArray()[0].x.length是:

$cursor = $collection->find(['group' => 3, 'x.a' => 2], ['x.$' => 1]);
$documents = iterator_to_array($cursor, false);
count($documents[0]['x']);

或者,在上面的示例中使用MongoCollection::findOne()会更容易,因为我们只处理第一个结果而忽略任何其他结果。重写:

$document = $collection->findOne(['group' => 3, 'x.a' => 2], ['x.$' => 1]);
count($document['x']);

我没有遵循您所说的“我知道 php 有计数但我不在乎”的意思。除非您指的是MongoCollection::count(),否则基本count()是计算返回文档中数组长度所必需的。

于 2012-08-24T21:10:49.370 回答