0

車のコレクションがあるとしましょう。コレクション内の車が正規表現を使用して所有しているさまざまなメーカーを検索して見つけられるようにしたいと思います。

そんなこと知ってる

db.collection.find( { make: { $regex: 'chev', $options: 'i' } } );

最も近い(同じ)一致するmake、2番目に近い(同じ)一致するmake、3番目などのすべてのドキュメントを返します。

正規表現クエリがメーカーと一致すると、同じメーカーのドキュメントが返されないようにクエリを作成するにはどうすればよいですか?

たとえば、次のドキュメントがあります。

{_id:1,make:"chevrolet"}
{_id:2,make:"chevrolet"} 
{_id:3,make:"Chevrolet"} 
{_id:4,make:"chevy"}
{_id:5,make:"chevy"}

コレクションが返されるようにコレクションをクエリするにはどうすればよいですか(大文字と小文字の区別は重要ではありません)。

{_id:1,make:"chevrolet"}
{_id:4,make:"chevy"}
4

1 に答える 1

1

2.2の集約フレームワークでは、グループを実行できます。

$db->col->aggregate(array(
    array('$match' => array('make' => new MongoRegex('/chev/i'))),
    array('$group' => array('_id' => '$make'))
));

_idグループ化時にコレクションからを戻すことはあまり意味がないため、これは実際には次のようになります。

{_id: 'chevy'},
{_id: 'chevrolet'}
于 2013-01-06T00:56:42.123 に答える