3

誰かがドキュメント検索にMongoRegexを使用する方法を知っていますか?

私はこれを試みましたが、何も返されません:

var spec = new Document();
spec.Add("Name", new MongoRegex("/" + searchKey + "*/", "i"));
collection.Find(spec)

なぜそれが機能しないのか疑問に思って、私はコンソールから次のコマンドを実行しようとしました:

db.things.find({"Name":/john*/i}) /* WORKS */
db.things.find({"Name":"/john*/i"}) /* DOESN'T WORK */

ドライバーが正規表現に二重引用符を適用する可能性はありますか?

ありがとう..

4

3 に答える 3

4

単純なプレフィックスクエリが必要です。その場合、正規表現は^+searchKeyになります。また、このフォームにより、mongodbはNameのインデックスを使用できるようになります。

var spec = new Document("Name", new MongoRegex(string.Format("^{0}",searchKey), "i"));
collection.Find(spec)
于 2010-04-23T15:45:35.880 に答える
1

C#に「/」を含める必要はないと思います。

spec.Add("Name", new MongoRegex(searchKey + "*", "i"));
于 2010-03-28T13:13:37.133 に答える
1

ソースコードを掘り下げた後、私はついに答えを見つけました:)

var spec = new Document();
spec.Add("Name", new MongoRegex(".*" + searchKey + ".*", "i"));
collection.Find(spec)
于 2010-04-07T10:25:57.800 に答える