【问题标题】:python: how to find documents with specific fieldspython:如何查找具有特定字段的文档
【发布时间】:2015-07-21 05:31:07
【问题描述】:

我正在使用 python 和 mongodb。我有一个包含 40000 个文档的集合。我有一组坐标,我需要找到这些坐标属于哪个文档。现在我在做:

cell_start = citymap.find({"cell_latlng":{"$geoIntersects":{"$geometry":{"type":"Point", "coordinates":orig_coord}}}})

这个方法是一个典型的geoJSON方法,效果很好。现在我知道有些文档有这样一个字段:

{'trips_dest':......}

这个字段的值并不重要,所以我跳过它。问题是,我可以从具有名为 'trips_dest' 的字段的文档中查找文档,而不是从所有这 40000 个文档中查找文档。

因为我知道只有大约 40% 的文档具有字段 'trips_dest',所以我认为这会提高效率。但是,我不知道如何修改我的代码来做到这一点。有什么想法吗?

【问题讨论】:

    标签: python mongodb documents


    【解决方案1】:

    您需要$exists 查询运算符。类似的东西:

    cell_start = citymap.find({"trips_dest": {$exists: true},
                               "cell_latlng":{"$geoIntersects":{"$geometry":{"type":"Point", "coordinates":orig_coord}}}})
    

    引用文档:

    语法: { field: { $exists: <boolean> } }

    <boolean>为真时,$exists匹配包含该字段的文档,包括该字段值为空的文档

    如果您需要拒绝 null 值,请使用:

     "trips_dest": {$exists: true, $ne: null}
    

    最后一点,sparse index 最终可能会加速此类查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-11
      • 1970-01-01
      • 1970-01-01
      • 2016-06-18
      • 2013-01-24
      • 2019-03-21
      • 2016-09-26
      相关资源
      最近更新 更多