我的问题是如何将来自 mongodb 的以下 js 代码转换为 php:
t.find( { group:3, 'xa':2 }, { 'x.$':1 } ).toArray()[0].x.length, "单个对象匹配(数组长度匹配)" );
您可以在以下位置找到整个 js 代码:
基本上我关心的是如何翻译成 php toArray()[0].x.length ?我知道 php 有计数,但我不在乎。我还有其他高级查询,所有这些都归结为这个问题。
我的问题是如何将来自 mongodb 的以下 js 代码转换为 php:
t.find( { group:3, 'xa':2 }, { 'x.$':1 } ).toArray()[0].x.length, "单个对象匹配(数组长度匹配)" );
您可以在以下位置找到整个 js 代码:
基本上我关心的是如何翻译成 php toArray()[0].x.length ?我知道 php 有计数,但我不在乎。我还有其他高级查询,所有这些都归结为这个问题。
的字面翻译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()是计算返回文档中数组长度所必需的。