0

请考虑此文档结构:

{
    _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 查询,所以我认为这并不重要,但如果你知道更好的方法来解决这个问题,请告诉我!

4

1 回答 1

1

您可以先按已批准的字段对其进行排序,然后再按版本字段对其进行排序。下面是如何 db.YourCollection.find().sort({approved:-1, version:-1}).next() 使用 pymongo 在 mongo shell 中获取所需文档的代码doc = db['YourCollection'].find().sort([('approved',-1),('version',-1)]).next()

于 2019-10-04T19:00:51.483 回答