1

多数の正規表現が同時に満たされていることを確認して検索したい MongoDB インスタンスがあります。/a/ で $all を使用する場合、または $regex 構文のみを使用する場合、クエリは機能しますが、両方を使用する場合は機能しません。

> db.claims.findOne({'tags': {$all: [/a/]}}, {description: 1, tags: 1})
{ "_id" : ..., "description" : "Test claim", "tags" : [ "general", "foobar" ] }
> db.claims.find({'tags': {$regex: 'a'}}, {description: 1, tags: 1})
{ "_id" : ..., "description" : "Test claim", "tags" : [ "general", "foobar" ] }
> db.claims.find({'tags': {$all: [{'$regex': 'a'}]}}, {description: 1, tags: 1})
> 

どうしたの?これら2つを一緒に使用するとバグがありますか?

4

1 に答える 1

3

私が正しく理解していれば、使用$andするとうまくいくはずです。

db.claims.find({"$and" : [{"tags":{ $regex : 'a'}},{"tags":{ $regex : 'a'}}]}, {description: 1, tags: 1})

正規表現を 1 つだけ満たす必要がある場合は、$or を使用します。もちろん、 と を組み合わせて使用​​でき$orます$and

于 2013-01-07T04:29:30.697 に答える