【问题标题】:How to formulate a query to return documents where some boolean is true, else return documents with boolean false如何制定查询以返回某些布尔值为真的文档,否则返回布尔值为假的文档
【发布时间】:2019-10-04 16:21:34
【问题描述】:

请考虑此文档结构:

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

【问题讨论】:

    标签: mongodb pymongo pymodm


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-21
      • 2021-11-01
      • 2014-12-01
      • 2018-01-24
      • 1970-01-01
      • 2015-04-01
      • 1970-01-01
      • 2017-12-11
      相关资源
      最近更新 更多