Frage Wie kann man MongoDB mit "Gefällt mir" abfragen?


Ich möchte etwas als SQL abfragen like Abfrage:

select * 
from users 
where name like '%m%'

Wie mache ich das gleiche in MongoDB?
Ich kann keinen Operator finden like in dem Dokumentationen.


1061
2017-07-22 03:19


Ursprung


Antworten:


Das müsste sein:

db.users.find({"name": /.*m.*/})

o.ä:

db.users.find({"name": /m/})

Du suchst nach etwas, das irgendwo "m" enthält (SQL 's%"Operator entspricht Regexp's".*'), nicht etwas, das "m" am Anfang der Saite verankert hat.


1431
2017-07-22 03:57



db.users.insert({name: 'paulo'})
db.users.insert({name: 'patric'})
db.users.insert({name: 'pedro'})

db.users.find({name: /a/})  //like '%a%'

aus: paulo, patrik

db.users.find({name: /^pa/}) //like 'pa%' 

aus: paulo, patrik

db.users.find({name: /ro$/}) //like '%ro'

aus: Pedro


238
2018-05-20 13:26



Im

  • PyMongo verwenden Python
  • Mungo verwenden Node.js 
  • Jongoverwenden Java
  • Mag ichverwenden Gehen

du kannst tun:

db.users.find({'name': {'$regex': 'sometext'}})

188
2017-10-07 17:07



In PHP könnten Sie folgenden Code verwenden:

$collection->find(array('name'=> array('$regex' => 'm'));

74
2018-05-13 08:36



Sie würden Regex dafür in Mongo verwenden.

z.B: db.users.find({"name": /^m/})


42
2017-07-22 03:48



Wenn Sie verwenden node.js, es sagt, dass du das schreiben kannst:

db.collection.find( { field: /acme.*corp/i } );
//or
db.collection.find( { field: { $regex: 'acme.*corp', $options: 'i' } } );

Ebenfalls, Sie können dies schreiben:

db.collection.find( { field: new RegExp('acme.*corp', 'i') } );

24
2018-03-09 06:11



Es gibt bereits viele Antworten. Ich gebe verschiedene Arten von Anforderungen und Lösungen für die String-Suche mit Regex.

Sie können mit Regex tun, die Wort enthalten, wie. Auch Sie können verwenden $options => i für die Suche nach Groß- / Kleinschreibung

Enthält string

db.collection.find({name:{'$regex' : 'string', '$options' : 'i'}})

Enthält nicht string nur mit Regex

db.collection.find({name:{'$regex' : '^((?!string).)*$', '$options' : 'i'}})

Groß- / Kleinschreibung nicht beachten string

db.collection.find({name:{'$regex' : '^string$', '$options' : 'i'}})

Beginnen mit string

db.collection.find({name:{'$regex' : '^string', '$options' : 'i'}})

Ende mit string

db.collection.find({name:{'$regex' : 'string$', '$options' : 'i'}})

Behalten Dies als Lesezeichen und als Referenz für andere Änderungen, die Sie möglicherweise benötigen.


22
2017-08-11 15:39



Du hast schon die Antworten, aber um Regex mit Groß- / Kleinschreibung zu vergleichen

Sie könnten die folgende Abfrage verwenden

db.users.find ({ "name" : /m/i } ).pretty()

Das i in dem /m/i zeigt Groß- und Kleinschreibung an und .pretty() bietet eine schönere Ausgabe


14
2017-11-21 05:39



Sie haben 2 Möglichkeiten:

db.users.find({"name": /string/})

oder

db.users.find({"name": {"$regex": "string", "$options": "i"}})

Auf der zweiten Seite haben Sie mehr Optionen, wie "i" in Optionen, um Groß- / Kleinschreibung zu finden. Und über die "Zeichenfolge" können Sie wie "verwenden".Zeichenfolge."(% string%), oder" string. * "(string%) und". * string) (% string) zum Beispiel. Sie können den regulären Ausdruck verwenden, wie Sie möchten.

Genießen!


13
2018-04-26 02:48



Für Mungo in Node.js

db.users.find({'name': {'$regex': '.*sometext.*'}})

11
2017-11-10 11:39



Sie können die neue Funktion von 2.6 mongodb verwenden:

db.foo.insert({desc: "This is a string with text"});
db.foo.insert({desc:"This is a another string with Text"});
db.foo.ensureIndex({"desc":"text"});
db.foo.find({
    $text:{
        $search:"text"
    }
});

10
2017-08-04 19:19