Pergunta

Alguém tem alguma ideia de como usar o MongoRegex para a pesquisa de documentos?

Eu tentei isso, mas não devolve nada:

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

Quer saber por que não funciona, tentei executar o seguinte comando do console:

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

É possível que o driver aplique a cotação dupla ao regex?

Obrigado..

Foi útil?

Solução

Você só quer uma consulta de prefixo simples. Seu regex é então ^ + SearchKey. Além disso, este formulário permitirá que o MongoDB use um índice no nome.

var spec = new Document("Name", new MongoRegex(string.Format("^{0}",searchKey), "i"));
collection.Find(spec)

Outras dicas

Eu acho que você não precisa incluir os "/" s em c#, ou seja,

spec.Add("Name", new MongoRegex(searchKey + "*", "i"));

Depois de cavar o código -fonte, finalmente encontrei a resposta :)

var spec = new Document();
spec.Add("Name", new MongoRegex(".*" + searchKey + ".*", "i"));
collection.Find(spec)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top