Проверьте все пакеты, которые вы установили для php, используя:
yum list installed | grep remi
Установите все соответствующие пакеты php, особенно php-devel на вашем компьютере.
Оригинальный ответ (2013):
Документы MongoDB являются объектами BSON, неупорядоченными словарями пар ключ-значение. Таким образом, вы не можете полагаться или устанавливать определенный порядок полей. Единственное, что вы можете использовать, - это какие поля отображать, а какие нет, см. Docs в аргументе find projection .
Также см. Связанные вопросы о SO:
Надеюсь, что это поможет.
Вышеупомянутый вопрос и ответ довольно старые. Во всяком случае, если кто-то посещает это, я чувствую, что должен добавить:
Этот ответ совершенно неверен. Фактически в Mongo Documents ARE заказываются пары ключ-значение. Однако при использовании pymongo он будет использовать python dicts для документов, которые действительно не упорядочены (так как cpython 3.6 python dicts сохраняет порядок, однако это считается деталью реализации). Но это ограничение драйвера pymongo.
Имейте в виду, что это ограничение фактически влияет на удобство использования. Если вы запрашиваете db для поддокумента, он будет соответствовать только, если порядок пар ключей-значений правильный.
Просто попробуйте следующий код самостоятельно:
from pymongo import MongoClient
db = MongoClient().testdb
col = db.testcol
subdoc = {
'field1': 1,
'field2': 2,
'filed3': 3
}
document = {
'subdoc': subdoc
}
col.insert_one(document)
print(col.find({'subdoc': subdoc}).count())
Каждый раз этот код запускается, тот же самый документ добавляется в коллекцию. Таким образом, каждый раз, когда мы запускаем этот фрагмент кода, печатное значение «должно» увеличиваться на единицу. Это происходит не потому, что find только перехватывает subdocuemnts с правильным порядком, но python dicts просто вставляет subdoc в произвольный порядок.
см. Следующий ответ, как использовать упорядоченный dict для преодоления этого: https: // stackoverflow.com/a/30787769/4273834