Как сформулировать запрос для возврата документов, где некоторое логическое значение истинно, иначе вернуть документы с логическим ложным - PullRequest
0 голосов
/ 04 октября 2019

Пожалуйста, рассмотрите эту структуру документа:

{
    _id:        <ObjectId>,
    version:    <int>
    approved:   <bool>
}

Теперь рассмотрим этот набор данных:

[
    { version: 1, approved: false},
    { version: 2, approved: true},
    { version: 3, approved: false}
]

Моя цель - получить последнюю версию документа, которая будет утверждена. Это будет версия документа 2.

Однако с этим набором данных:

[
    { version: 1, approved: false},
    { version: 2, approved: false},
    { version: 3, approved: false}
]

Я ожидаю получить документ версии 3 в качестве самой последней версии.

Как бы я справился с этим с помощью одного запроса mongodb?

Для интереса я работаю через python с библиотеками pymongo и pymodm. Я предполагаю, что мне придется выполнить необработанный запрос MongoDB, так что я думаю, что это не будет иметь большого значения, но дайте мне знать, если вы знаете лучший способ сделать это!

1 Ответ

1 голос
/ 04 октября 2019

Вы можете просто отсортировать его сначала по утвержденному полю, а затем по полю версии. Ниже приведен код, как получить нужный документ в оболочке mongo db.YourCollection.find().sort({approved:-1, version:-1}).next() с pymongo doc = db['YourCollection'].find().sort([('approved',-1),('version',-1)]).next()

...