MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

nie można użyć wyrażenia regularnego w operatorze $in w mongodb

Musisz zawinąć elementy w tablicy za pomocą RegExp obiekt tj.

regex = [new RegExp("sai", "i"), new RegExp("test", "i"),...]

Możesz użyć map() metoda mapowania elementów w tablicy z opakowaniami RegExp do nowej tablicy, której można następnie użyć w zapytaniu regex z $in :

var x = ["sai","test","jacob","justin"],
    regex = x.map(function (e) { return new RegExp(e, "i"); });

db.users.find({"profile.firstName": { "$in": regex } });

Korzystanie z $in może być dość wydajny w przypadku małych tablic, ale nie tak dobrze w przypadku dużych list, ponieważ będzie przeskakiwać w indeksie, aby znaleźć pasujące dokumenty, lub przechodzić przez całą kolekcję, jeśli nie ma indeksu do użycia.

Poza tym używając $in z wyrażeniem regularnym , możesz użyć wzorca wyrażeń regularnych rozdzielonych pionową kreską z listą słów kluczowych w następujący sposób:

var x = ["sai","test","jacob","justin"],
    regex = x.join("|");

db.users.find({
    "profile.firstName": {
        "$regex": regex, 
        "$options": "i"
    } 
}).count;


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Otrzymuję błąd:Route() w Route nie może być zastosowane do String

  2. Jak stworzyć użytkownika w mongodb za pomocą docker-compose

  3. Ekspresowe ładowanie sesji z Mongo z session_id

  4. Mongoose.js tworzy wiele połączeń do MongoDB z jednego wywołania connect()

  5. Błąd obsługi MongoDB podczas wstawiania w Javie