2013-02-06 14 views
5

Moje zapytanie brzmi:Jak uzyskać negację zapytania MongoDB?

db.users.find({"username" : {$regex : ".*substring.*"}}); 

Zamiast się nazwy użytkowników, które zawierają „podciąg”, muszę nazw użytkownika, które nie zawierają go.

+3

Czy próbowałeś operatora '$ not'? –

+0

$ nie działa świetnie, dzięki! – Ognjen

Odpowiedz

5

W tym celu można użyć $ a nie operatora:

db.test.find({ username: { $not: /substring/ } }); 

jak w:

> db.test.insert({ username: "Derick Rethans" }); 
> db.test.insert({ username: "Hannes Magunusson" }); 
> db.test.find({ username: { $not: /ag/ } }); 
{ "_id" : ObjectId("511258b36879ad400c26084f"), "username" : "Derick Rethans" } 

Jednak trzeba mieć świadomość, że wyrażenia regularne i użycie $ not operator uniemożliwia używanie indeksów. Jeśli chcesz często wykonywać to zapytanie, możesz dobrze przyjrzeć się projektowi schematu.

Powiązane problemy