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 に答える