Индекс MongoDB преобразуется в numberlong

#php #mongodb #laravel #schema #database

#php #mongodb #laravel #схема #База данных

Вопрос:

Я пытаюсь создать индекс MongoDB для определенного поля со следующими входными данными:

Коллекция: сообщения

 source_id (integer)
message_id (string)
subject (string)
timestamp (integer)
 

Мне нужно запросить эту коллекцию в полях source и uid.

Пример документа:

 { 
 "_id" : ObjectId("53aad315bffebc5d378b4569"), 
 "source_id" : NumberLong(1), 
 "message_id" : "AMA9D2TP9zWA.kuhlman.lowell@dietrich.com", 
 "subject" : "Labore aut est amet temporibus mollitia et.", 
 "timestamp" : NumberLong(1364645191) 
}
 

Простой db.messages.getIndexes() возвращает, что мой индекс message_id является NumberLong?

 > db.messages.getIndexes()
[
{
    "v" : 1,
    "name" : "_id_",
    "key" : {
        "_id" : 1
    },
    "ns" : "hs.messages"
},
{
    "v" : 1,
    "name" : "s_1",
    "key" : {
        "s" : NumberLong(1)
    },
    "ns" : "hs.messages"
},
{
    "v" : 1,
    "name" : "m_1",
    "key" : {
        "m" : NumberLong(1)
    },
    "ns" : "hs.messages"
}
]
 

Комментарии:

1. Число, следующее за полем, указывает направление сортировки. Однако я бы не ожидал, что тип будет NumberLong . Можете ли вы поделиться командами, используемыми для создания индексов?

2. @James $коллекция->индекс (‘source_id’); $коллекция->индекс (‘message_id’); с github.com/jenssegers/laravel-mongodb

3. Направление сортировки, записываемое как NumberLong, будет артефактом либо кода laravel-mongodb, либо базового клиентского программного обеспечения. Возможно, стоит направить вопрос Github в этот проект. Индекс должен работать нормально в любом случае. Я протестировал это в оболочке mongo, заставив направление сортировки быть NumberLong. Запросы к этому индексу работают так, как и ожидалось. Вы можете проверить себя, выполнив запрос, который должен использовать индекс, и добавив .explain()