MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

MongoDB - интерпретирайте конкретен обяснен изход

Резултатът там е специфичен за регулярен израз, който не е обвързан с началната позиция на низа. Така че за регулярен израз, който ще сканира индекса, а не колекцията (въпреки че в този случай ще сканира целия индекс), трябва да има набор от начални граници и крайни граници:

Помислете за първата заявка с различен регулярен израз:

db.collection.find({ "username": /bob/ }).explain()

    "indexBounds" : {
            "username" : [
                    [
                            "",
                            {

                            }
                    ],
                    [
                            /bob/,
                            /bob/
                    ]
            ]
    },

Така че това означава, че има целия низ за търсене и след това съвпадението ще завърши на нещо, което съдържа "bob" като част от низа. Така че първата част е „лексикалните“ граници на съвпадението, а втората част е действителният регулярен израз, който трябва да се приложи:

Следната заявка показва това по-ясно:

db.collection.find({ username: /^bob/ }).explain()

    "indexBounds" : {
            "username" : [
                    [
                            "bob",
                            "boc"
                    ],
                    [
                            /^bob/,
                            /^bob/
                    ]
            ]
    },

Тъй като това е закотвено към началото на низа, единствените записи в индекса, които трябва да бъдат тествани, съвпадат "лексикално" между "bob" и "boc". Регулярният израз отново се съдържа като втората част от границите.

Записите за граници обикновено се описват вътрешно като елементи от „две части“ и има този случай за регулярни изрази, които в първата част имат границите на низа, което има смисъл за съпоставяне на индекса, а след това регулярният израз да се приложи към съвпадащите цели.

Като последна бележка вижте следното:

db.collection.find({ username: {$gt: ""} }).explain()

    "indexBounds" : {
            "username" : [
                    [
                            "",
                            {

                            }
                    ]
            ]
    },

Което по своята същност е същото като първоначалната ви заявка, която гласи да съответства на всички низ.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да обобщим сумата в MongoDB, за да получите общ брой?

  2. Намерете последния документ за деня за последните 7 дни

  3. Данните от Mongoose изтичат, но се запазват в базата данни

  4. Схема за потребителски оценки - База данни за ключ/стойност

  5. Частична актуализация на поддокумент с nodejs/mongoose