如何制定查询以返回布尔值为true的文档,否则返回布尔值为false的文档

时间:2019-10-04 16:21:34

标签: mongodb pymongo pymodm

请考虑以下文档结构:

Failed to compile

GraphQL Error Field "elements" must not have a selection since type "String" has no subfields.

  file: C:/xampp/htdocs/drupal-gatsby-t/node_modules/gatsby-drupal-webform/dist/Webform.jsx

   1 | 
   2 |  fragment Webform on webform__webform {
   3 |      name: drupal_internal__id
   4 |      description
   5 |      status
>  6 |      elements {
     |               ^
   7 |          name
   8 |          _type
   9 |          _title
  10 |          _title_display
  11 |          _default_value
  12 |          _description
  13 |          _markup
  14 |          _maxlength
  15 |          _placeholder
  16 |          _required

现在,考虑以下数据集:

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

我的目标是获取批准的最新文档版本。那将是文档版本2。

但是,使用此数据集:

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

我希望将版本3的文档作为最新版本。

如何通过一个mongodb查询来做到这一点?

出于兴趣,我正在使用pymongo和pymodm库通过python进行工作。我以为我必须做一个原始的MongoDB查询,所以我认为这没什么大不了的,但是如果您知道一种更好的解决方法,请告诉我!

1 个答案:

答案 0 :(得分:1)

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